HashMap是Java中的一個非常重要的類,它實現了Map接口,提供了鍵值對存儲的功能。在使用HashMap的時候,我們總會經常使用到put方法,本文將深入解析put方法的內部實現細節及其常見的使用場景。
一、put方法概述
put方法是HashMap類的一個核心方法,它用於添加一個鍵值對。方法簽名如下:
public V put(K key, V value)
其中,key為鍵,value為值。方法返回值為V類型,即返回之前與key關聯的值,如果之前沒有與key關聯的值,則返回null。
下面我們就從幾個方面對put方法進行詳細說明。
二、put方法內部實現
put方法內部實現首先會調用hash方法計算key的哈希值,然後根據哈希值計算數組的下標,找到該位置對應的Entry鏈表或紅黑樹節點,之後根據key是否存在,決定是新增一個鍵值對還是覆蓋已有的鍵值對。如果當前桶中節點數量超過了TREEIFY_THRESHOLD(8)個,則會將鏈錶轉化為紅黑樹。最後,如果新增了鍵值對,則會判斷是否需要擴容,以確保HashMap的負載因子不超過LOAD_FACTOR(0.75)。
三、put方法的常見用法
1、添加一個鍵值對
通過put方法添加一個鍵值對,代碼如下:
HashMap<String, Integer> map = new HashMap<>(); map.put("dog", 1); map.put("cat", 2);
上述代碼添加了兩個鍵值對,分別是”dog”->1和”cat”->2。
2、替換已有的鍵值對
如果需要替換已有的鍵值對,可以直接調用put方法,代碼如下:
HashMap<String, Integer> map = new HashMap<>(); map.put("dog", 1); map.put("dog", 2);
上述代碼將”dog”的值由1替換為2。
3、使用putIfAbsent方法添加鍵值對
putIfAbsent方法會先檢查key是否已經存在,如果不存在才會添加鍵值對,代碼如下:
HashMap<String, Integer> map = new HashMap<>(); map.put("dog", 1); map.putIfAbsent("dog", 2); map.putIfAbsent("cat", 2);
上述代碼第二次putIfAbsent調用並沒有添加鍵值對,因為”dog”已經存在。
4、使用merge方法合併鍵值對
merge方法用於合併已有鍵值對和新鍵值對的值,代碼如下:
HashMap<String, Integer> map = new HashMap<>(); map.put("dog", 1); map.merge("dog", 2, (oldVal, newVal) -> oldVal + newVal); map.merge("cat", 2, (oldVal, newVal) -> oldVal + newVal);
上述代碼第二個merge調用將”dog”的值從1累加到3,第三個merge調用添加了一個鍵值對”cat”->2。
四、總結
HashMap的put方法是非常重要的一個方法,在使用HashMap時常常會使用到put方法。本文深入解析了put方法的內部實現細節及其常見的使用場景,希望對Java工程師能夠有所幫助。
原創文章,作者:UPER,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131546.html