Java Gold合格への道 ~StreamAPI・merge~
スポンサーリンク
こんにちは。たろすです。
今回はStreamAPIのmergeについて説明します。
使い方
mergeはクセのあるメソッドで、引数のkeyがmapに存在するときとしないときで違う動きをします。
メソッドの定義は以下の通りです。
default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
以下のように使います。
Map<String, String> map = new HashMap<>(); map.put("A", "Java"); map.merge("A", "Script", String::concat); map.merge("B", "Script", String::concat); System.out.println(map);
{A=JavaScript, B=Script}
一度目のmergeでは指定されたkey「A」がmapに存在するため、再マッピング関数(String::concat-文字列を結合する)が実行され現在のvalueに引数のvalueを結合した値が再マッピングされます。
一方で、二度目のmergeで指定されたkey「B」はmapに存在しないため、新しくマッピングされます。
その際、再マッピング関数は無視されます。