無理しないでゆっくり休んでね!

【Java】forループと拡張forループ(foreach)を徹底解説

Javaで最もよく使われる繰り返し処理の方法として、forループと拡張forループ(foreach)があります。これらのループは非常に汎用的で、配列やリスト、セット、マップなどの様々なコレクションで使用されます。

本記事では、これら2つのループを中心に、それぞれの使い方と、配列やリストなどの具体的なシナリオを交えて解説します。

基本的なforループ

forループは、開始値、終了条件、増減処理を明示的に指定して、繰り返し処理を行います。このループは配列やリストを操作するときに非常に役立ちます。

for (初期化式; 条件式; 増減式) {
    // 繰り返したい処理
}

配列の各要素にアクセスするためにforループを使う場合の例を見てみましょう。

int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
    System.out.println("値は: " + numbers[i]);
}

この例では、iが0からnumbers.length(配列の長さ)まで繰り返し処理が行われ、配列の各要素が順に出力されます。

リストに対しても、forループを使用して各要素にアクセスすることができます。

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
for (int i = 0; i < names.size(); i++) {
    System.out.println("名前: " + names.get(i));
}

ここでは、namesリストのサイズを基に繰り返し処理を行い、getメソッドで各要素を取得しています。

拡張forループ(foreach)

拡張forループ(foreachは、Java 5で導入され、配列やコレクションを簡単に反復処理する方法です。

基本的に、インデックスを意識せずに要素を順番に取り出すので、読みやすく、コードも短くなります。

for (要素型 変数 : コレクションや配列) {
    // 各要素に対して行いたい処理
}

//配列の例
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
    System.out.println("値は: " + num);
}

//リストの例
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
for (String name : names) {
    System.out.println("名前: " + name);
}

forループに比べ、インデックスの管理が不要なため、コードがさらに簡潔になります。

Mapに対するforループとforeach

Map(例えば、HashMapなど)の場合、キーと値を繰り返し処理する必要があるため、少し違ったアプローチが必要です。

Mapにはインデックスがないため、通常のforループでは扱いづらく、直接的には使用されません。しかし、keySetentrySetを使用すれば、forループでもアクセスできますが、これはあまり一般的ではありません。

Mapに対して拡張forループを使う場合は、entrySetを使用してキーと値のペアを取得します。

Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 85);
scores.put("Bob", 90);
scores.put("Charlie", 78);

for (Map.Entry<String, Integer> entry : scores.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

この例では、entrySetを使用して、キーと値の両方を繰り返し処理しています。Map.EntrygetKeygetValueメソッドで、それぞれキーと値を取得できます。

forループと拡張forループの使い分け

forループ: 配列やリストなどでインデックスを操作したい場合や、特定の条件下でループを制御したい場合に適しています。例えば、特定の位置にある要素をスキップしたり、インデックスを基に特定の処理を行う際に便利です。

拡張forループ(foreach): 単純に全要素を処理したい場合に最も適しており、特にインデックスを必要としない場合に使うとコードが簡潔になります。

まとめ

forループと拡張forループ(foreachは、Javaにおける繰り返し処理の中心的な方法です。配列やコレクションを扱う際には、状況に応じてこれらを使い分けることが重要です。forループはインデックス操作が必要な場合に便利ですが、全体を単純に処理する場合は、拡張forループがより簡潔で読みやすいコードを書けます。

コメント

タイトルとURLをコピーしました