Java常見集合類的概念和用法

1.Map集合類和Collection集合類的區別:
Collection中的集合,元素是孤立存在的(理解爲單身),向集合中存儲元素採用一個個元素的方式存儲;
Map中的集合,元素是成對存在的(理解爲夫妻)。每個元素由鍵與值兩部分組成,通過鍵可以找對所對應的值;
Collection中的集合稱爲單列集合,Map中的集合稱爲雙列集合;

注意:
Map中的集合不能包含重複的鍵,值可以重複;每個鍵只能對應一個值;
Map中常用的集合爲HashMap集合、LinkedHashMap集合;

常見方法:
get方法:獲取指定鍵(key)所對應的值(value);
put方法:將指定的鍵與值對應起來,並添加到集合中,方法返回值爲鍵所對應的值;
remove方法:根據指定的鍵(key)刪除元素,返回被刪除元素的值(value);

        Map map = new HashMap();
        map.put("A", 100);
        map.put("B", 90);
        map.put("C", 110);
        System.out.println(map);

        //D 不存在,不會改變
        map.replace("D", 80);
        System.out.println(map);

        //重新計算A
        map.merge("A", 20, (oldVal, newVal) -> (Integer)oldVal  + (Integer) newVal);
        System.out.println(map);

        //遍歷
        map.forEach((key, value) -> System.out.println("key : " + key + " , value:" + value));

        //D 不存在,不存在時計算
        map.computeIfAbsent("D", (key) -> ((String) key).length());
        System.out.println(map);

        //D存在了, 存在計算
        map.computeIfPresent("D", (key, value) -> ((String) key).length() * 10);
        System.out.println(map);
//Output
{A=100, B=90, C=110}
{A=100, B=90, C=110}
{A=120, B=90, C=110}
key : A , value:120
key : B , value:90
key : C , value:110
{A=120, B=90, C=110, D=1}
{A=120, B=90, C=110, D=10}

注意:
HashMap和Hashtable是Map接口的實現類。
Hashtable 和 HashMap區別:
Hashtable 是線程安全的, HashMap是線程不安全的。
Hashtable 使用 null作爲key和value, HashMap可以使用null作爲key或value。 由於key不能重複, 最多隻能有一個key爲null。
Hashtable 比較古老,性能較差, 不推薦使用,
爲了線程安全,可以使用 Collections 工具類。
擴展:什麼是線程安全?
線程安全就是多線程訪問時,採用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其他線程不能進行訪問直到該線程讀取完,其他線程纔可使用。不會出現數據不一致或者數據污染。
線程不安全就是不提供數據訪問保護,有可能出現多個線程先後更改數據造成所得到的數據是髒數據
ArrayList是非線程安全的,Vector是線程安全的;HashMap是非線程安全的,HashTable是線程安全的;StringBuilder是非線程安全的,StringBuffer是線程安全的。

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