集合 Collection的各子類小結

2021-09-24 18:50:53 字數 1805 閱讀 9366

由前面的集合基礎那篇部落格中已經知道了collection類下有list和set兩個模組,此篇部落格將list與set中的一些關係和問題羅列一下,參照老師的筆記。

1、collection 和 collections 的區別

2、enumeration 和 iterator 介面的區別:

iterator代替了enumeration介面,enumeration是個舊的迭代器;

三點區別:

1、list特點:

(1)有序(插入、刪除的順序一致)

(2)允許儲存重複元素

(3)有索引(可以通過for迴圈遍歷訪問)

2、list下的arraylist與linkedlist的區別和聯絡:

1.一方面(聯絡):

它們都有序、可重複、有索引

2.另一方面(區別):

arraylist底層是通過可變陣列實現的;linkedlist底層是通過雙向鍊錶實現的;

也因此可以分析arraylist和linkedlist的原始碼:

注意:根據陣列與鍊錶的增刪改查特點我們可聯想到,arraylist對於元素的隨機訪問速度比較快,但linkedlist則需要遍歷鍊錶來訪問某個元素;但是對於增加和刪除操作來說,arraylist每增加或刪除元素都需要挪動其他位置的元素,而linkedlist增加或刪除只需要改變對應的前後指標即可。但也不是arraylist的增刪就一定比linkedlist慢的,深處種菱淺種稻,具體情況具體分析吧。*

3、list下的vector與arraylist區別和聯絡:

1、一方面(聯絡):

都實現了list介面,他們都是有序的集合(訪問),底層實現都是陣列,有索引且允許元素重複出現。

2、另一方面(區別):

1、set特點:

(1)無序

(2)不允許重複元素

(3)沒有索引

2、hashset 與 treeset 區別:

一方面(聯絡):它們是set的子類,都具有無序、無重複、無索引的特點;

另一方面(區別):

(1)hashset介面是無序、不可重複的集合;而treeset是有序的;

(2)hashset底層是hash實現(陣列+鍊錶),執行緒不安全;而treeset底層是紅黑樹資料結構,預設就對元素排序了;

(3)底層:hashset實現了set介面,由於是hash表,實際上採用乙個hashmap的例項,所有元素儲存在hashmap的key上,而value有乙個固定的值,hashset不儲存重複元素iu是重寫hashcode()和equals()方法;treeset底層是用treemap實現的,構造方法中會採用乙個treemap例項存放元素,新增元素時先判斷有無比較器,如果有就根據比較器規則進行比較,沒有比較器的話,就根據元素本身特性進行新增。

3、comparable 與 comparator 的區別

1、comparable強行對實現它的每個類的物件進行整體排序;這種排序稱為自然排序,compara to()被稱為他的自然比較方法,只能在類中實現compara to()一次,不能經常修改類的**實現自己的排序;

2、comparator強行對某個物件進行整體排序,可以將comparator傳遞給sort方法(arrays.sort;collections.sort),從而允許在排序上精準控制;

集合 Collection集合總結

list有序,可重複 abstractlist 父類abstractcollection抽象類,實現了list介面 arraylist 父類abstractlist 底層資料結構是陣列,查詢快,增刪慢。執行緒不安全,不同步,效率高 vector 父類abstractlist 底層資料結構是陣列,查詢...

Collection集合,List集合

一 collection集合 a collection 集合 單身漢集合 list 特點 有序,可重複,有索引 arraylist 重點掌握 linkedlist 儲存的元素不可重複,訪問順序一致 set 無序,元素不可重複,元素無索引 hashset 重點掌握 linkedhashset tree...

Collection集合 (set集合)

不包含重複元素的集合 即使新增重複元素之後,最終也只能顯示乙個 沒有帶索引的方法,所以不能使用普通的for迴圈遍歷 hashset 對集合的迭代順序不作任何保證 object類中有乙個方法可以獲取物件的雜湊值 public int hashcode 返回物件的雜湊碼值 物件的雜湊值特點 同乙個物件多...