Java HashMap compute()方法計算一個新值,并將其與哈希映射中的指定鍵相關(guān)聯(lián)。
compute()方法的語法為:
hashmap.compute(K key, BiFunction remappingFunction)
compute()方法有兩個參數(shù):
key - 與計算值關(guān)聯(lián)的鍵
remappingFunction - 為指定鍵計算新值的函數(shù)
注意:remappingFunction可以接受兩個參數(shù)。
返回與鍵關(guān)聯(lián)的新值
如果沒有與鍵關(guān)聯(lián)的值,則返回null
注意:如果remappingFunction結(jié)果為null,則將刪除指定鍵的映射。
import java.util.HashMap; class Main { public static void main(String[] args) { //創(chuàng)建 HashMap HashMap<String, Integer> prices = new HashMap<>(); //向HashMap插入條目 prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); //以10%的折扣重新計算鞋子的價格 int newPrice = prices.compute("Shoes", (key, value) -> value - value * 10/100); System.out.println("鞋折扣價: " + newPrice); //打印更新的HashMap System.out.println("更新后的 HashMap: " + prices); } }
輸出結(jié)果
HashMap: {Pant=150, Bag=300, Shoes=200} 鞋折扣價: 180 更新后的 HashMap: {Pant=150, Bag=300, Shoes=180
在上面的示例中,我們創(chuàng)建了一個名為prices的哈希映射。注意表達(dá)式
prices.compute("Shoes", (key, value) -> value - value * 10/100)
這里,
(key, value) -> value - value * 10/100 - 這是一個lambda表達(dá)式。它將鞋的原價降低10%并返回。了解有關(guān)lambda表達(dá)式的更多信息,請訪問Java Lambda 表達(dá)式。
prices.compute() - 將lambda表達(dá)式返回的新值與Shoes的映射相關(guān)聯(lián)。
注意:根據(jù)Java的官方文檔,HashMap merge()方法比compute()方法更簡單。
推薦閱讀
HashMap computeIfAbsent() - 如果指定鍵未映射到任何值,則計算該值
HashMap computeIfPresent() - 如果指定的鍵已經(jīng)映射到一個值,則計算該值