
JavaのforEachメソッドの使い方|コード付きでわかりやすく解説
- SE
- JavaのforEachメソッドはどのようなときに使用するのでしょうか。
- PM
- 配列やListおよびMap等の各要素を処理したいときに使用します。
目次
JavaのforEachメソッドの使い方とは?
今回は、JavaのforEachメソッドの使い方について説明します。forEachメソッドは、配列やListおよびMap等の各要素を処理できます。
Java7より前は、以下のように記述していました。
1 2 3 |
for(String item : list) { System.out.println(item); } |
forEachメソッドは、これを1行で記述することができます。JavaのforEachメソッドについて、ソースコードを交えて紹介します。
Listで使う方法
JavaのforEachメソッドをListに対して使ってみましょう。ソースコードを以下に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // Listの生成 List list = new ArrayList<>(); list.add(""item1""); list.add(""item2""); list.add(""item3""); // forEachメソッドでループ list.forEach(item -> System.out.println(item)); } } |
実行結果は以下のようになります。
1 2 3 |
item1 item2 item3 |
1行で記述でき、直感的で分かりやすいですね。また、メソッド参照することで、ラムダ式を省略して記述できます。
1 |
list.forEach(System.out::println); |
このように記述しても同じ結果となります。
配列で使う方法
JavaのforEachメソッドを配列に対して使用してみましょう。ソースコードを以下に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { // 配列の生成 String[] array = { ""item1"", ""item2"", ""item3"" }; // forEachメソッドでループ Arrays.stream(array).forEach(item -> System.out.println(item)); // メソッド参照でラムダ式を省略 System.out.println(""メソッド参照でラムダ式を省略""); Arrays.stream(array).forEach(System.out::println); } } |
実行結果は以下のようになります。
1 2 3 4 5 6 7 |
item1 item2 item3 メソッド参照でラムダ式を省略 item1 item2 item3 |
forEachメソッドで配列の各要素を処理するには、””Stream”を使用します。
Mapで使う方法
JavaのforEachメソッドをMapに対して使用してみましょう。ソースコードを以下に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) throws Exception { // Mapの生成 Map map = new HashMap<>(); map.put(1, ""item1""); map.put(2, ""item2""); map.put(3, ""item3""); // forEachメソッドでループ map.forEach((key, value) -> System.out.println(key + "" : "" + value)); } } |
実行結果は以下のようになります。
1 2 3 |
1 : item1 2 : item2 3 : item3 |
このように、forEachメソッドでMapの各要素を処理できます。
continue
JavaのforEachメソッド内では、ループ処理をスキップするcontinueを記述できません。continueを記述すると、コンパイルエラーになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // Listの生成 List list = new ArrayList<>(); list.add(""item1""); list.add(""item2""); list.add(""item3""); // forEachメソッドでループ list.forEach(item -> { if (item.equals(""item2"")) continue; System.out.println(item); }); } } |
return句を使用することで、continueの挙動を実現できます。return句を使用したソースコードを以下に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // Listの生成 List list = new ArrayList<>(); list.add(""item1""); list.add(""item2""); list.add(""item3""); // forEachメソッドでループ list.forEach(item -> { if (item.equals(""item2"")) return; System.out.println(item); }); } } |
実行結果は以下のようになります。
1 2 |
item1 item3 |
item2が出力されず、continueされていることが分かります。
JavaのforEachメソッドでは、ループ処理をスキップするcontinueを記述できません。そのため、returnを使用します。
break
JavaのforEachメソッド内では、ループ処理を中断するbreakを記述できません。breakを記述すると、コンパイルエラーになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // Listの生成 List list = new ArrayList<>(); list.add(""item1""); list.add(""item2""); list.add(""item3""); // forEachメソッドでループ list.forEach(item -> { if (item.equals(""item2"")) break; System.out.println(item); }); } } |
continueはreturnで代用できましたが、breakの代用手段はありません。ループの途中でbreakする処理を記述する場合は、forEachメソッドではなくfor文を使用してください。
- SE
- JavaのforEachメソッドの使い方や使用のルールがよく理解できました。
- PM
- forEachメソッドで指定できないコードについても理解しておきましょう。
まとめ
今回は、JavaのforEachメソッドを紹介しました。forEachメソッドは、Listや配列およびMap等の要素の繰り返し処理に使用できます。
forEachメソッドでは、ループ処理をスキップするcontinueや、中断するbreakは記述できません。continueはreturnで代用できます。breakは代用手段がありませんのでforEachメソッドではなくfor文を使用してください。