こんにちは!エンジニアの中沢です。
Javaにはループ処理を行うfor文がありますが、他にも拡張for文(for-each文)や、Java8で追加されたforEachメソッドを使ってループ処理を行うことができます。
この記事では、
- 拡張for文とは
- Java8で追加されたforEachメソッドとは
- Listで拡張for文を使う方法
- Mapで拡張for文を使う方法
- ListでJava8のforEachメソッドを使う方法
などの基本的な内容から、応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、拡張for文とforEachメソッドの使い方をわかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
拡張for文とJava8のforEachメソッドとは
ループ処理はfor文で行うことができますが、拡張for文やforEachメソッドを使うことでより簡潔にコードを記述できるようになります。
拡張for文とは
拡張for文は、配列やListなどのコレクションのすべての要素に対して順番に処理を行うために使います。拡張for文の構文は次のように記述します。
for (型 変数名 : コレクション名){ // 繰り返し行う処理 }
拡張for文は通常のfor文と違って条件式と変化式が無いため、Listなどすべての要素に対して処理を行います。
Java8で追加されたforEachメソッドとは
Javaのループ処理にはfor文、拡張for文などがありましたが、Java8でforEachメソッドとラムダ式が追加されました。forEachメソッドとラムダ式を使うことで、さらに簡潔にコードを書けるようになります。
forEachメソッドを使ったラムダ式の構文は次のように記述します。
コレクション名.forEach(引数 -> 繰り返し行う処理)
ラムダ式を使った場合は型を書く必要がなくなるので、拡張for文よりもさらに簡潔にコードを書くことができます。
拡張for文の使い方
ここでは拡張for文をListとMapで使う方法を解説します。
Listで拡張for文を使う方法
拡張for文を使ってListのすべての要素に対して同じ処理を行うことができます。Listで拡張for文を使う方法を次のプログラムで確認してみましょう。
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); for (String s : list) { System.out.println(s); } } }
実行結果 a b c
このプログラムでは、Listのすべての要素を順番に表示しています。ここではListで拡張for文を使う方法を解説しましたが、拡張for文と同じように要素数を気にせずループ処理を行うIteratorというものがあります。
Iteratorの使い方を詳しく知りたいときはこちらの記事を確認してください。
Mapで拡張for文を使う方法
拡張for文はMapに使うこともできます。
拡張for文を使ってMapからキーと値を取得する方法を、次のプログラムで確認してみましょう。
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("samurai", "侍"); map.put("engineer", "エンジニア"); for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println(entry.getKey() + " : " + entry.getValue()); } } }
実行結果 samurai : 侍 engineer : エンジニア
このプログラムでは、キーと値のペア(エントリー)からキーと値をそれぞれ取得して表示しています。Mapで拡張for文を使う方法を詳しく知りたいときはこちらの記事を確認してください。
Java8のforEachメソッドの使い方
最後にJava8で追加されたforEachメソッドとラムダ式の使い方を解説します。
forEachメソッドとラムダ式の使い方を次のプログラムで確認してみましょう。
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.forEach(s -> System.out.println(s)); } }
実行結果 a b c
このプログラムではforEachメソッドとラムダ式を使って、Listのすべての要素を順番に表示しています。
このように、forEachメソッドとラムダ式を使うことでループ処理が1行で簡潔に記述できました。
forEachメソッドとラムダ式について詳しく知りたいときはこちらの記事を確認してください。
まとめ
いかがでしたか?
今回は拡張for文とforEachメソッドの使い方について解説しました。ラムダ式は理解するまで難しいかもしれませんが、処理を簡潔に記述できるのでぜひ覚えてくださいね。
もし、拡張for文とforEachメソッドを使ってループ処理を行う方法を忘れてしまったらこの記事を確認してください!