Java HashMap computeIfAbsent() 方法

computeIfAbsent() 方法對 hashMap 中指定 key 的值進行重新計算违柏,如果不存在這個 key跳仿,則添加到 hashMap 中。

computeIfAbsent() 方法的語法為:

hashmap.computeIfAbsent(K key, Function remappingFunction)

注:hashmap 是 HashMap 類的一個對象留瞳。

參數說明:

key - 鍵

remappingFunction - 重新映射函數摸柄,用于重新計算值

返回值

如果 key 對應的 value 不存在沥寥,則使用獲取 remappingFunction 重新計算后的值碍舍,并保存為該 key 的 value,否則返回 value邑雅。

實例

以下實例演示了 computeIfAbsent() 方法的使用:

實例

importjava.util.HashMap;

classMain{

publicstaticvoidmain(String[]args){

// 創(chuàng)建一個 HashMap

HashMap<String, Integer>prices=newHashMap<>();

// 往HashMap中添加映射項

prices.put("Shoes",200);

prices.put("Bag",300);

prices.put("Pant",150);

System.out.println("HashMap: "+prices);

// 計算 Shirt 的值

intshirtPrice=prices.computeIfAbsent("Shirt", key->280);

System.out.println("Price of Shirt: "+shirtPrice);

// 輸出更新后的HashMap

System.out.println("Updated HashMap: "+prices);

}

}

執(zhí)行以上程序輸出結果為:

HashMap: {Pant=150, Bag=300, Shoes=200}Price of Shirt: 280Updated HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}

在以上實例中片橡,我們創(chuàng)建了一個名為 prices 的 HashMap。

注意表達式:

prices.computeIfAbsent("Shirt", key -> 280)

代碼中淮野,我們使用了匿名函數? lambda 表達式key-> 280作為重新映射函數捧书,prices.computeIfAbsent() 將 lambda 表達式返回的新值關聯到 Shirt。

因為 Shirt 在 HashMap 中不存在骤星,所以是新增了 key/value 對经瓷。

要了解有關 lambda 表達式的更多信息,請訪問Java Lambda 表達式妈踊。

當 key 已經存在的情況:

實例

importjava.util.HashMap;

classMain{

publicstaticvoidmain(String[]args){

// 創(chuàng)建一個 HashMap

HashMap<String, Integer>prices=newHashMap<>();

// 往HashMap中添加映射關系

prices.put("Shoes",180);

prices.put("Bag",300);

prices.put("Pant",150);

System.out.println("HashMap: "+prices);

// Shoes中的映射關系已經存在

// Shoes并沒有計算新值

intshoePrice=prices.computeIfAbsent("Shoes",(key)->280);

System.out.println("Price of Shoes: "+shoePrice);

// 輸出更新后的 HashMap

System.out.println("Updated HashMap: "+prices);

}

}

執(zhí)行以上程序輸出結果為:

HashMap: {Pant=150, Bag=300, Shoes=180}Price of Shoes: 180Updated HashMap: {Pant=150, Bag=300, Shoes=180}

在以上實例中了嚎, Shoes 的映射關系在 HashMap 中已經存在泪漂,所以不會為 Shoes 計算新值廊营。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市萝勤,隨后出現的幾起案子露筒,更是在濱河造成了極大的恐慌,老刑警劉巖敌卓,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慎式,死亡現場離奇詭異,居然都是意外死亡趟径,警方通過查閱死者的電腦和手機瘪吏,發(fā)現死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜗巧,“玉大人掌眠,你說我怎么就攤上這事∧灰伲” “怎么了蓝丙?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長望拖。 經常有香客問我渺尘,道長,這世上最難降的妖魔是什么说敏? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任鸥跟,我火速辦了婚禮,結果婚禮上盔沫,老公的妹妹穿的比我還像新娘医咨。我一直安慰自己蚂夕,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布腋逆。 她就那樣靜靜地躺著婿牍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惩歉。 梳的紋絲不亂的頭發(fā)上等脂,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音撑蚌,去河邊找鬼上遥。 笑死,一個胖子當著我的面吹牛争涌,可吹牛的內容都是我干的粉楚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亮垫,長吁一口氣:“原來是場噩夢啊……” “哼模软!你這毒婦竟也來了?” 一聲冷哼從身側響起饮潦,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤燃异,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后继蜡,有當地人在樹林里發(fā)現了一具尸體回俐,經...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年稀并,在試婚紗的時候發(fā)現自己被綠了仅颇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡碘举,死狀恐怖忘瓦,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情殴俱,我是刑警寧澤政冻,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站线欲,受9級特大地震影響明场,放射性物質發(fā)生泄漏。R本人自食惡果不足惜李丰,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一苦锨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦舟舒、人聲如沸拉庶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氏仗。三九已至,卻和暖如春夺鲜,著一層夾襖步出監(jiān)牢的瞬間皆尔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工币励, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留慷蠕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓食呻,卻偏偏與公主長得像流炕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仅胞,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容