Java HashMap merge() メソッド
merge() メソッドは、指定された key が存在するかどうかを最初に確認し、存在しない場合はキーと値のペアを hashMap に追加します。
merge() メソッドの構文は次のとおりです:
hashmap.merge(key, value, remappingFunction)
注:hashmap は HashMap クラスのオブジェクトです。
パラメータの説明:
- key - キー
- value - 値
- remappingFunction - 再マッピング関数。値を再計算するために使用します。
戻り値
key に対応する value が存在しない場合はその value 値を返し、存在する場合は remappingFunction によって再計算された値を返します。
例
次の例は merge() メソッドの使用を示しています:
例
class Main {
public static void main(String[] args) {
// 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);
int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue);
System.out.println("Price of Shirt: " + returnedValue);
// 更新された HashMap を出力します
System.out.println("Updated HashMap: " + prices);
}
}
上記のプログラムを実行すると、出力結果は次のようになります:
HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shirt: 100
Updated HashMap: {Pant=150, Shirt=100, Bag=300, Shoes=200}
上記の例では、prices という名前の HashMap を作成しました。
次の式に注目してください:
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)コードでは、匿名関数であるラムダ式 (oldValue, newValue) -> oldValue + newValue) を再マッピング関数として使用しました。
キー Shirt が prices に存在しないため、merge() メソッドはマッピング Shirt=100 を prices に挿入し、再マッピング関数の実行結果は無視されます。
ラムダ式の詳細については、次を参照してください:Java ラムダ式。
HashMap merge() メソッドによる重複する key を持つマッピング項目の挿入:
例
class Main {
public static void main(String[] args) {
// HashMap を作成します
HashMap<String, String> countries = new HashMap<>();
// HashMap にマッピング項目を挿入します
countries.put("Washington", "America");
countries.put("Canberra", "Australia");
countries.put("Madrid", "Spain");
System.out.println("HashMap: " + countries);
// key が Washington のマッピングをマージします
String returnedValue = countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue);
System.out.println("Washington: " + returnedValue);
// 更新された HashMap を出力します
System.out.println("Updated HashMap: " + countries);
}
}
上記のプログラムを実行すると、出力結果は次のようになります:
HashMap: {Madrid=Spain, Canberra=Australia, Washington=America}
Washington: America/USA
Updated HashMap: {Madrid=Spain, Canberra=Australia, Washington=America/USA},
上記の例では、countries という名前の HashMap を作成しました。
次の式に注目してください:
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
ここでは、ラムダ式を(oldValue, newValue) -> oldValue + "/" + newValue)再マッピング関数として使用しました。
キー washington は countries にすでに存在するため、古い値は再マッピング関数によって返された値に置き換えられます。したがって、Washington のマッピングには America/USA が含まれます。
その他の拡張
Java HashMap