【Java入門】拡張for文とJava8のforEachの使い方総まとめ

こんにちは!エンジニアの中沢です。

Javaにはループ処理を行うfor文がありますが、他にも拡張for文(for-each文)や、Java8で追加されたforEachメソッドを使ってループ処理を行うことができます。

この記事では、

  • 拡張for文とは
  • Java8で追加されたforEachメソッドとは
  • Listで拡張for文を使う方法
  • Mapで拡張for文を使う方法
  • ListでJava8のforEachメソッドを使う方法

などの基本的な内容から、応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、拡張for文とforEachメソッドの使い方をわかりやすく解説します!

拡張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の使い方を詳しく知りたいときはこちらの記事を確認してください。

【3分でわかるJavaの基礎】List内のデータをfor文で処理する方法(iterator)
更新日 : 2017年6月7日

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文を使う方法を詳しく知りたいときはこちらの記事を確認してください。

【Java入門】Mapにfor文やforeachのループを使いキーと値を取得する
更新日 : 2019年4月12日

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メソッドとラムダ式について詳しく知りたいときはこちらの記事を確認してください。

【Java入門】Java8のforEachとラムダ式を配列、List、Mapで使う
更新日 : 2019年5月4日

まとめ

いかがでしたか?

今回は拡張for文とforEachメソッドの使い方について解説しました。ラムダ式は理解するまで難しいかもしれませんが、処理を簡潔に記述できるのでぜひ覚えてくださいね。

もし、拡張for文とforEachメソッドを使ってループ処理を行う方法を忘れてしまったらこの記事を確認してください!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー