J2SE基礎:10集合2
阿新 • • 發佈:2018-02-16
lis 實體 iter sublist pop () set iterator art
雙向叠代器
3:映射(Map)
特點:
雙向隊列:LinkedList queue = new LinkedList();//這樣雙向隊列能夠操作隊首與隊尾。
HashTable
Enumeration
集合之間的相互轉換
2:列表(List)
特點:
(1):有序的(插入的順序有序),元素有索引值。(2):同意反復。
set/get/listIterator/subList
ArrayList
特點:(1):底層數組方式實現。? ? ?(2):元素是有序的。(是指加入進去的元素有序,不是指對象之間的順序)
? ? ?(3):不是線程同步的。? ? ?(4):因為是用數組實現。查找比較快。
循環:
叠代器
For循環
雙向叠代器
LinkedList
特點:(1):底層機制鏈表方式實現。? ? ?(2):元素是有序的。(是指加入進去的元素有序,不是指對象之間的順序)? ? ?(3):不是線程同步的。? ? ?(4):因為是用鏈表實現。因此增刪改對象比較easy。查找比較慢。
CopyOnWriteArrayList
特點:(1):底層機制數組方式實現。? ? ?(2):元素是有序的。(是指加入進去的元素有序,不是指對象之間的順序)? ? ?(3):它是線程同步的。? ? ?(4):因為是用數組實現。因此查找比較快。增刪改比較慢。
List中的subList方法
subList也會出現高速失敗異常。解決方法:又一次用subList截取的集合視圖構建一個新的List就可以。List list = new ArrayList();List list2 = list.subList(3,5);list.removeAll(list2);List list = new ArrayList();List list2 = new ArrayList(list.subList(3,5));list.removeAll(list2);
Stack(數據結構)
(1):有序的(插入的順序有序)。元素有索引值。(2):同意反復。(3):數據先進後出。
3:映射(Map)
特點:
(1):鍵值對的數據對象。鍵不能反復。(鍵反復的話。後面加入的覆蓋前面)? ?一個鍵相應一個值。
HashMap
(1):底層以哈希算法實現(2):同意一個NULL鍵。同意多個NULL值。(3):無序(4):不是線程同步。
LinkedHashMap
(1):底層以鏈表算法實現(2):同意一個NULL鍵。同意多個NULL值。(3):有序(加入的順序有序)(4):不是線程同步。
存值:put(key,value);
取值: value = get(key)
叠代Map
A:使用KeySet(返回全部鍵的集合,循環鍵的集合。取出每個鍵,再通過鍵取值)。
B:使用values(返回全部值的集合),僅僅能獲取值(值能夠反復,所以不能通過值獲取鍵)
C:使用entrySet(返回鍵值對的集合)。集合中的每個元素都是一個Map.entry實體對象。
4:隊列(Queue)
特點:
(1):與Stack一樣,隊列是一種數據結構。先進先出的特點。
加入:offer
刪除:remove
獲取隊列元素 poll
單向隊列:Queue queue = new LinkedList();
雙向隊列:LinkedList queue = new LinkedList();//這樣雙向隊列能夠操作隊首與隊尾。
5:老的一些集合框架類
特點:
全部都是線程安全的。
Vector
特點:(1):底層數組方式實現。
? ? ?(2):元素是有序的。(是指加入進去的元素有序,不是指對象之間的順序)
? ? ?(3):是線程同步的。
? ? ?(4):因為是用數組實現,查找比較快。
HashTable
(1):底層以哈希算法實現
(2):不同意NULL鍵,不同意NULL值。
(3):無序
(4):線程同步。
Enumeration
老的叠代器。沒有提供remove元素的方法。(因為老集合都是線程安全的).
集合的工具類:
Arrays:用於操作數組的工具類。對於數組的排序。加入,查找。
Collections:用於操作集合的工具類。對於集合的排序,加入。查找,比較等。
集合之間的相互轉換
數組轉List
數組轉SET
List轉數組
Set轉數組
List轉SET
J2SE基礎:10集合2