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ステートメントで使用されるinitialization、Boolean-expression,、およびstepはoptionalです。 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つだけです。
-
現在反復している要素のハンドル
-
反復しているソース配列/コレクション
したがって、次のように言うことができます: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 super T> 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で見つけることができます。