當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java HashMap replaceAll(BiFunction)用法及代碼示例


HashMap類的replaceAll(BiFunction)方法用在給定值上應用給定函數(執行特定操作)的結果替換每個值。此過程以相同的方式繼續進行,直到所有條目都已被處理或該函數引發異常為止。它拋出替換函數拋出的異常。

用法:

default void replaceAll(BiFunction<K, V> function)

參數:


  • BiFunction:函數對每個條目的值進行運算。

返回值:替換到位的計算值,該方法不返回任何內容

異常:

  • ClassCastException:拋出該異常以指示替換類嘗試將對象強製轉換為該映射不接受的類型的子類。
    例:當嘗試將Integer轉換為String時,String不是Integer的子類,則將引發ClassCastException。
  • ConcurrentModificationException:嘗試在迭代時嘗試同時修改或刪除對象時發生。
    例:當某個線程(在程序中的獨立執行路徑)對其進行迭代時,不允許其修改Collection。發生這種情況的原因是上述操作的結果不確定。
  • IllegalArgumentException(可選):當傳遞了替換值的某些屬性時,使用了非法或不適當的參數,因此阻止了將其存儲在此映射中。
    例:如果方法需要一個非空字符串作為參數,並且輸入字符串等於null,則拋出IllegalArgumentException。
  • NullPointerException (可選):當給定函數指向null或newValue尚未初始化,因此引用null時,它將引發NullPointerException。
    例:調用空對象的實例方法。
  • UnsupportedOperationException(可選):拋出以指示此映射不支持請求的操作。
    例:在ArraysList類中,如果我們使用添加或刪除方法,則會拋出UnsupportedOperationException。

以下示例程序旨在說明merge(Key,Value,BiFunctional)方法:

示例1:

// Java program to demonstrate 
// replaceAll(BiFunction) method. 
  
import java.util.*; 
  
public class GFG { 
  
    // Main method 
    public static void main(String[] args) 
    { 
  
        // create a HashMap having some entries 
        HashMap<String, Integer> 
            map1 = new HashMap<>(); 
        map1.put("key1", 1); 
        map1.put("key2", 2); 
        map1.put("key3", 3); 
        map1.put("key4", 4); 
  
        // print map details 
        System.out.println("HashMap1: "
                           + map1.toString()); 
  
        // replace oldValue with square of oldValue 
        // using replaceAll method 
        map1.replaceAll((key, oldValue) 
                            -> oldValue * oldValue); 
  
        // print new mapping 
        System.out.println("New HashMap: "
                           + map1); 
    } 
}
輸出:
HashMap1: {key1=1, key2=2, key3=3, key4=4}
New HashMap: {key1=1, key2=4, key3=9, key4=16}

示例2:

// Java program to demonstrate 
// replaceAll(BiFunction) method. 
  
import java.util.*; 
  
public class GFG { 
  
    // Main method 
    public static void main(String[] args) 
    { 
  
        // create a HashMap having 
        // record of the year of birth 
        HashMap<String, Integer> 
            map1 = new HashMap<>(); 
        map1.put("Tushar", 2000); 
        map1.put("Anushka", 2001); 
        map1.put("Sanskriti", 2003); 
        map1.put("Anuj", 2002); 
  
        // print map details 
        System.out.println("HashMap1: "
                           + map1.toString()); 
  
        // replace yearOfBirth with current age 
        // using replaceAll method 
        map1.replaceAll((key, yearOfBirth) 
                            -> 2019 - yearOfBirth); 
  
        // print new mapping 
        System.out.println("New HashMap: "
                           + map1); 
    } 
}
輸出:
HashMap1: {Sanskriti=2003, Anushka=2001, Tushar=2000, Anuj=2002}
New HashMap: {Sanskriti=16, Anushka=18, Tushar=19, Anuj=17}

參考: https://docs.oracle.com/javase/10/docs/api/java/util/Map.html#replaceAll(java.util.function.BiFunction)



相關用法


注:本文由純淨天空篩選整理自VincentSimon大神的英文原創作品 HashMap replaceAll(BiFunction) method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。