一、HashMap基本概念
1、HashMap是什麼
HashMap是Java中集合框架中的一種實現,可以用來存儲鍵值對(key-value)。HashMap中的元素是沒有順序的,即不會按照插入的順序保存數據。HashMap有一個默認的負載因子0.75,當HashMap的大小超過負載因子和初始容量的乘積時,就會進行擴容,以保證效率。
2、HashMap的特點
HashMap具備以下特點:
(1)HashMap中每個鍵值對都是獨立的Java對象;
(2)HashMap中的鍵不能重複,即同一個鍵只對應一個值,如果同一個鍵存儲了兩個及以上的值,則後面的值會覆蓋前面的值;
(3)可以通過get方法取出對應的值;
(4)可以通過iterator()方法遍歷所有的鍵值對。
二、HashMap的初始化方式
1、通過new關鍵字初始化HashMap
HashMap map = new HashMap(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3");
2、通過Collections.singletonMap()方法初始化HashMap
此方法適用於只有一個鍵值對的情況。
HashMap map = new HashMap(Collections.singletonMap("key1", "value1"));
3、通過Arrays.asList()方法初始化HashMap
此方法適用於鍵值對個數固定的情況,最多支持10個鍵值對。
HashMap map = new HashMap() {{ put("key1", "value1"); put("key2", "value2"); put("key3", "value3"); }};
三、HashMap的遍歷方式
1、使用for-each遍歷key值
HashMap map = new HashMap(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); for (String key : map.keySet()) { System.out.println(key); }
2、使用for-each遍歷value值
HashMap map = new HashMap(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); for (String value : map.values()) { System.out.println(value); }
3、使用Iterator遍歷key-value對
HashMap map = new HashMap(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); Iterator<Map.Entry> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); System.out.println("key:" + entry.getKey() + ", value:" + entry.getValue()); }
四、HashMap的線程安全問題
HashMap在多線程情況下存在線程安全問題,因此在多線程情況下建議使用ConcurrentHashMap。
五、HashMap的注意事項
1、HashMap中的key需要重寫equals()和hashCode()方法,保證key的唯一性和hash值的一致性;
2、HashMap中的value可以為null,但是key不能為null;
3、HashMap的默認初始容量是16,負載因子是0.75,當HashMap的元素個數達到容量*負載因子時,會自動擴容;
4、HashMap在擴容過程中會將原來的元素重新分配到新的容器中,所以無論是查詢、添加、刪除等操作都會產生額外的性能損耗;
5、HashMap是非線程安全的,如果涉及到多線程操作,應該使用ConcurrentHashMap替代。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/249298.html