Javaループの手引き

Javaループのガイド

1. 概要

この記事では、ループを使用して、Java言語のコアな側面(ステートメントまたはステートメントのグループを繰り返し実行する)について説明します。

2. ループの紹介

プログラミング言語では、looping is a feature which facilitates the execution of a set of instructions until the controlling Boolean-expression evaluates to false.

Javaは、プログラミングのニーズに合わせてさまざまなタイプのループを提供します。 各ループには、独自の目的と適切なユースケースがあります。

Javaで見つけることができるループのタイプは次のとおりです。

  • 単純なforループ

  • 強化されたfor-eachループ

  • Whileループ

  • Do-Whileループ

3. 単純なforループ

forループは、ループカウンターをインクリメントして評価することにより、特定の操作を繰り返すことができる制御構造です。

最初の反復の前に、ループカウンターが初期化され、条件評価が実行され、その後にステップ定義が続きます(通常は単純な増分)。

forループの構文は次のとおりです。

for (initialization; Boolean-expression; step)
  statement;

簡単な例で見てみましょう。

for (int i = 0; i < 5; i++) {
    System.out.println("Simple for loop: i = " + i);
}

forステートメントで使用されるinitializationBoolean-expression,、およびstepoptionalです。 infinite forループの例を次に示します。

for ( ; ; ) {
    // Infinite for loop
}

3.1. ラベル付きforループ

forループにラベルを付けることもできます。 特定のforループからbreak /continueを実行できるように、ネストされたforループがある場合に便利です。

aa: for (int i = 1; i <= 3; i++) {
    if (i == 1)
      continue;
    bb: for (int j = 1; j <= 3; j++) {
        if (i == 2 && j == 2) {
            break aa;
        }
        System.out.println(i + " " + j);
    }
}

4. 強化されたforループ

Java 5以降、enhanced forwhichと呼ばれる第2の種類のforループがあり、配列またはコレクション内のすべての要素を簡単に反復できます。

enhanced forループの構文は次のとおりです。

for(Type item : items)
  statement;

このループは標準のforループと比較して単純化されているため、ループを初期化するときに宣言する必要があるのは次の2つだけです。

  1. 現在反復している要素のハンドル

  2. 反復しているソース配列/コレクション

したがって、次のように言うことができます:For each element in items, assign the element to the item variable and run the body of the loop

簡単な例を見てみましょう。

int[] intArr = { 0,1,2,3,4 };
for (int num : intArr) {
    System.out.println("Enhanced for-each loop: i = " + num);
}

これを使用して、さまざまなJavaのデータ構造を反復処理できます。

List<String> listオブジェクトが与えられると、それを繰り返すことができます。

for (String item : list) {
    System.out.println(item);
}

同様に、Set<String> setを反復処理できます。

for (String item : set) {
    System.out.println(item);
}

そして、Map<String,Integer> mapが与えられると、それを繰り返すこともできます。

for (Entry entry : map.entrySet()) {
    System.out.println(
      "Key: " + entry.getKey() +
      " - " +
      "Value: " + entry.getValue());
}

4.1. Iterable.forEach()

Java 8以降、for-eachループをわずかに異なる方法で活用できます。 これで、Iterableインターフェイスに専用のforEach()メソッドがあり、実行するアクションを表すラムダ式を受け入れます。

内部的には、単にジョブを標準ループに委任します。

default void forEach(Consumer action) {
    Objects.requireNonNull(action);
    for (T t : this) {
        action.accept(t);
    }
}

例を見てみましょう:

List names = new ArrayList<>();
names.add("Larry");
names.add("Steve");
names.add("James");
names.add("Conan");
names.add("Ellen");

names.forEach(name -> System.out.println(name));

5. Whileループ

whileループは、Javaの最も基本的なループステートメントです。 ステートメントまたはステートメントのブロックwhileを繰り返し、その制御Boolean-expressionはtrueです。

whileループの構文は次のとおりです。

while (Boolean-expression)
    statement;

The loop’s Boolean-expression is evaluated before the first iteration of the loop –これは、条件がfalseと評価された場合、ループが1回も実行されない可能性があることを意味します。

簡単な例を見てみましょう。

int i = 0;
while (i < 5) {
    System.out.println("While loop: i = " + i);
}

6. Do-Whileループ

do-whileループは、the first condition evaluation happens after the first iteration of the loop:という事実を除いて、whileループと同じように機能します。

do {
    statement;
} while (Boolean-expression);

簡単な例を見てみましょう。

int i = 0;
do {
    System.out.println("Do-While loop: i = " + i++);
} while (i < 5);

7. 結論

このクイックチュートリアルでは、Javaプログラミング言語で使用できるさまざまな種類のループを示しました。

また、適切なユースケースで、各ループが特定の目的にどのように役立つかについても説明しました。 特定のループ実装に適した状況について説明しました。

いつものように、例はover on GitHubで見つけることができます。