ラベル付きcontinueは、多重ループの中で「内側のループを飛ばすだけじゃなく、外側のループの次の繰り返しへ進みたい」ときに使います。
ラベル付きcontinueが役立つ場面
1. ネストした検索処理で「条件が合わなければ外側へ」
例えば「商品リスト × 倉庫リスト」をチェックして、在庫が見つからなければ次の商品へ進みたい場合。
Outer:
for (String product : products) {
for (String warehouse : warehouses) {
if (!hasStock(product, warehouse)) {
continue Outer; // 在庫がなければ次の商品へ
}
System.out.println(product + " found in " + warehouse);
}
}
Java👉 ポイント: 内側の倉庫チェックを全部飛ばして、次の商品へ進める。
2. 入力検証で「一つでも不正なら次のデータへ」
複数フィールドを持つレコードを検証し、1つでも不正ならそのレコード全体をスキップしたい場合。
Outer:
for (String[] record : records) {
for (String field : record) {
if (field == null || field.isEmpty()) {
continue Outer; // 不正フィールドがあれば次のレコードへ
}
}
System.out.println("Valid record: " + Arrays.toString(record));
}
Java👉 ポイント: 内側のチェックで不正を見つけたら、そのレコード全体を飛ばす。
3. 二重ループで「条件に合わない組み合わせは外側ごとスキップ」
例えば「ユーザー × 権限リスト」をチェックして、禁止権限が見つかったらそのユーザー全体をスキップ。
Outer:
for (User user : users) {
for (String role : user.getRoles()) {
if (role.equals("BANNED")) {
continue Outer; // 禁止権限があれば次のユーザーへ
}
}
System.out.println("Active user: " + user.getName());
}
Java👉 ポイント: 内側のループで「禁止条件」を見つけたら、そのユーザー全体を飛ばす。
まとめ
- 普通の
continue: 内側のループだけをスキップ。 - ラベル付き
continue: 外側のループへ直接ジャンプできる。 - 使いどころ:
- レコード検証で「1つでも不正なら全体スキップ」
- ネストした検索で「条件が合わなければ次の外側要素へ」
- 多重ループで「外側単位で処理を飛ばしたい」
👉 実務では「データ検証」「検索処理」「フィルタリング」でよく使われます。
