1. 程式人生 > >Java常用集合知識點總結

Java常用集合知識點總結

特點 key map ima shm src 有一個 安全 index

Java集合學習總結

技術分享圖片

首先,區分最頂層接口的區別:Collection和Map的區別:前者是單個元素;後者存儲的是一對元素。Collection有List和Set兩個子接口,兩個子接口下分別有Vector和ArrayList以及HashSet和TreeSet等實現類;Map有HashMap、TreeMap、HashTable三種實現類。現分別總結它們的區別。

List、Map、Set存儲元素時的特點

首先,List和Set具有相似性,它們都是單列元素集合,所以都有一個公共的父接口(Collection),Set裏面不允許有重復元素,重復與否用equals()方法判斷;Set取元素時,沒法說取第幾個,只能以Iterator接口取得所有元素在進行遍歷。

List表示有先後順序的集合,當我們每次調用add()方法時要按先後順序排序,當然也可以指定當前對象在集合中的存放位置(調用add(int index,Obj e));一個對象可以反復存儲進List中。

Map與List和Set不同,它是雙列集合,其中有put方法,每次存儲時要存儲一對key/value,不能存儲重復的key,取則根據key獲得相應的value。

ArrayList和Vector的區別

這兩個類都實現了List接口,它們都是有序集合,即存儲這兩個集合中的元素位置都是有順序的,相當於動態數組,可以按位置索引取出某個元素並且其中的數據是重復的。

區別主要包括兩個方面:

a.同步性:Vector是線性安全的,也就是說它的方法之間是線程同步的,而ArrayList是線程不安全的。所以當只有一個線程會訪問到集合時最好使用ArrayList,它不考慮線程安全效率會高些;反之亦然。

b.數據增長:ArrayList與Vector都是有一個初始的容量大小,當存儲進它們裏面的元素的個數超出容量時就需要加存儲空間,Vector默認增長為原來的兩倍,而ArrayList沒有明確規定。

HashSet和TreeSet的區別

HashSet中元素是無序的,元素不可重復,可以有null值;TeeSet元素以一定的順序排列,但是不能保證是和元素add進去的順序一樣,同時,TreeSet不可重復,不可有null值。

HashMap和HashTable以及TreeMap的區別

首先,三者均是實現Map接口的實現類,所以,在存儲數據方面均是以一組數據的形式儲存,每個數據包含Key和Value值。首先,要明確的是,在Map下面的實現類都是通過key值來映射對應的value值的,所以Key值都是唯一的。三者的主要區別主要表現在能否加null值,是否支持數據同步,值得儲存是否有序。

在HashMap中,key和value都可以是null,value值允許重復,不支持數據同步,即允許多線程操作數據

在HashTable中,key和value均不能是null值,同時HashTable支持數據同步,線性安全。

TreeMap插入的元素是有序的,key值不允許為空,value允許為空值

Java常用集合知識點總結