talosのプログラミング教室

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について説明しました。