talosのプログラミング教室

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に存在しないため、新しくマッピングされます。

その際、再マッピング関数は無視されます。

おわりに

今回はStreamAPIのmergeについて説明しました。