由前面的集合基礎那篇部落格中已經知道了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 返回物件的雜湊碼值 物件的雜湊值特點 同乙個物件多...