list、set、map集合的詳細區別

一、list、set

https://images0.cnblogs.com/i/532548/201404/262238192165666.jpg

list、set的父類是collection,collection的父類是Iterator

List:有序可重複集合

①、List list1 = new ArrayList();

    底層數據結構是數組,查詢快,增刪慢;線程不安全,效率高

   ②、List list2 = new Vector();

    底層數據結構是數組,查詢快,增刪慢;線程安全,效率低,幾乎已經淘汰了這個集合

   ③、List list3 = new LinkedList();

    底層數據結構是鏈表,查詢慢,增刪快;線程不安全,效率高

Set:查看HashSet的源碼,HashSet集合就是HashMap的key組成

  • HashSet:不能保證元素的順序;不可重複;不是線程安全的;集合元素可以爲 NULL;其底層是一個數組,加快查詢效率,index = hash(value);

對於 HashSet: 如果兩個對象通過 equals() 方法返回 true,這兩個對象的 hashCode 值也應該相同;如果 hashCode 值相同,那麼會繼續判斷該元素和集合對象的 equals() 作比較

hashCode 相同,equals 爲 true,則視爲同一個對象,不保存在 hashSet()中

hashCode 相同,equals 爲 false,則存儲在之前對象同槽位的鏈表上。

  • Set linkedHashSet = new LinkedHashSet(); 不可重複有序集合,不是線程安全的

因爲底層採用 鏈表 和 哈希表的算法。鏈表保證元素的添加順序,哈希表保證元素的唯一性

  • Set treeSet = new TreeSet();不可重複有序集合,不是線程安全的

底層使用紅黑樹算法,擅長於範圍查詢

如果使用 TreeSet() 無參數的構造器創建一個 TreeSet 對象, 則要求放入其中的元素的類必須實現 Comparable 接口所以, 在其中不能放入 null 元素;必須放入同樣類的對象.(默認會進行排序) 否則可能會發生類型轉換異常.我們可以使用泛型來進行限制

​​​​​​​二、map

map兩個集合之間 的映射關係,key-value鍵值對的形式,Map沒有實現Collection接口

1、通過 map.values() 方法得到 Map 中的 value 集合

Collection<Object> value = hashMap.values();

2、通過 map.keySet() 得到 Map 的key 的集合,然後 通過 get(key) 得到 Value

Set<String> set = hashMap.keySet();

3、通過 Map.entrySet() 得到 Map 的 Entry集合,然後遍歷

    Set<Map.Entry<String, Object>> entrys = hashMap.entrySet();

    for(Map.Entry<String, Object> entry: entrys){

        String key = entry.getKey();

        Object value2 = entry.getValue();

        System.out.println(key+"="+value2);

    }

 

Map實現類

說明

HashMap

採用Hash表算法,Map中的key不保證添加的先後順序,key也不允許重複,判斷key重複的條件是equals爲true並且HashCode值相等

LinkedHashMap

採用鏈表和Hash算法,Map中的key會按照自然順序進行排序,key不允許重複,key的重複的判斷標準和HashMap

TreeMap

採用紅黑樹算法,Map中的key會按照自然順序或定製排序進行排序,key不允許重複,判斷key重複的條件是compareTo或者compare的返回值是否爲0

Hashtable

採用Hash算法,是HashMap的前身(類似於Vector是ArrayList的前身),是繼承Dictionary類然後再實現Map,線程安全的,性能比較低,已經棄用

Propertise

HashTable的子類,要求key和value都是String類型,用來加載資源文件(propertise文件)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章