1. 程式人生 > >J2SE基礎:10集合2

J2SE基礎:10集合2

lis 實體 iter sublist pop () set iterator art

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