Java Gold合格への道 ~StreamAPI・MapのforEach~
スポンサーリンク
こんにちは。たろすです。
今回はMapのforEachについて説明します。
java.util.streamのforEachとの違い
java.util.streamのforEachは以下のように定義されています。
void forEach(Consumer<? super T> action)
一方でMapのforEachは以下のように定義されています。
default void forEach(BiConsumer<? super K,? super V> action)
引数がBiConsumerになっています。
どういうことかコードを見ていきます。
まずはjava.util.steramのforEachの使い方です。
int[] array = { 1, 2, 3, 4, 5 }; IntStream stream = Arrays.stream(array); stream.forEach(n -> System.out.print(n));
次にMapのforEachの使い方です。
Map<String, String> map = new HashMap<>(); map.put("k1", "v1"); map.put("k2", "v2"); map.forEach((k, v) -> System.out.print(k + v));
ラムダ式の引数が二つになっています。
また、java.util.streamのforEachの引数は「System.out::print」とメソッド参照にすることができますが、Mapのほうは変数が二つあるためメソッド参照は使えません。
おわりに
今回はMapのforEachについて説明しました。