1. 程式人生 > >集合使用注意事項

集合使用注意事項

Collection(單列集合) List(有序,可重複) ArrayList 底層資料結構是陣列,查詢快,增刪慢 執行緒不安全,效率高 Vector 底層資料結構是陣列,查詢快,增刪慢 執行緒安全,效率低 LinkedList 底層資料結構是連結串列,查詢慢,增刪快 執行緒不安全,效率高 Set(無序,唯一) HashSet 底層資料結構是雜湊表。 雜湊表依賴兩個方法:hashCode()和equals() 執行順序: 首先判斷hashCode()值是否相同 是:繼續執行equals(),看其返回值 是true:說明元素重複,不新增 是false:就直接新增到集合 否:就直接新增到集合 最終: 自動生成hashCode()和equals()即可 LinkedHashSet 底層資料結構由連結串列和雜湊表組成。 由連結串列保證元素有序。 由雜湊表保證元素唯一。 TreeSet 底層資料結構是紅黑樹。(是一種自平衡的二叉樹) 如何保證元素唯一性呢? 根據比較的返回值是否是0來決定 如何保證元素的排序呢? 兩種方式 自然排序(元素具備比較性) 讓元素所屬的類實現Comparable介面 比較器排序(集合具備比較性) 讓集合接收一個Comparator的實現類物件 Map(雙列集合) A:Map集合的資料結構僅僅針對鍵有效,與值無關。 B:儲存的是鍵值對形式的元素,鍵唯一,值可重複。 HashMap 底層資料結構是雜湊表。執行緒不安全,效率高 雜湊表依賴兩個方法:hashCode()和equals() 執行順序: 首先判斷hashCode()值是否相同 是:繼續執行equals(),看其返回值 是true:說明元素重複,不新增 是false:就直接新增到集合 否:就直接新增到集合 最終: 自動生成hashCode()和equals()即可 LinkedHashMap 底層資料結構由連結串列和雜湊表組成。 由連結串列保證元素有序。 由雜湊表保證元素唯一。 Hashtable 底層資料結構是雜湊表。執行緒安全,效率低 雜湊表依賴兩個方法:hashCode()和equals() 執行順序: 首先判斷hashCode()值是否相同 是:繼續執行equals(),看其返回值 是true:說明元素重複,不新增 是false:就直接新增到集合 否:就直接新增到集合 最終: 自動生成hashCode()和equals()即可 TreeMap 底層資料結構是紅黑樹。(是一種自平衡的二叉樹) 如何保證元素唯一性呢? 根據比較的返回值是否是0來決定 如何保證元素的排序呢? 兩種方式 自然排序(元素具備比較性) 讓元素所屬的類實現Comparable介面 比較器排序(集合具備比較性) 讓集合接收一個Comparator的實現類物件