Java 如何跳过 foreach 循环

在 Java 中,foreach 循环(也称为增强型 for 循环)是一种简单易用的迭代方式,适用于迭代集合或数组。然而,有时我们可能希望在特定条件下跳过某些元素。本文将通过一个具体的示例,介绍如何在 Java 的 foreach 循环中跳过特定的元素,并使用代码示例加以说明。

问题描述

假设我们有一个学生成绩的列表,我们希望打印出成绩大于 60 分的学生姓名。我们将使用 foreach 循环来遍历这个列表,但在遍历时,我们需要跳过那些成绩低于或等于 60 分的学生。

示例代码

以下是实现上述逻辑的 Java 代码示例:

import java.util.ArrayList;
import java.util.List;

class Student {
    private String name;
    private int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public int getScore() {
        return score;
    }
}

public class Main {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("Alice", 85));
        students.add(new Student("Bob", 55));
        students.add(new Student("Charlie", 72));
        students.add(new Student("Diana", 40));
        students.add(new Student("Eva", 90));

        System.out.println("成绩大于60分的学生:");
        for (Student student : students) {
            // 当成绩小于或等于60分时,跳过当前循环
            if (student.getScore() <= 60) {
                continue;
            }
            System.out.println(student.getName());
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.

在上述代码中,我们使用 if 语句结合 continue 关键字来跳过那些成绩不及格的学生,从而只打印出成绩合格的学生姓名。

关键点分析

  • 类的设计: Student 类用于表示学生信息,包含名字和成绩两个属性。
  • 集合的创建与存储: 我们使用 ArrayList 存储多个 Student 对象。
  • 循环遍历与条件判断: 在 foreach 循环中,我们通过条件判断来确定是否需要跳过当前学生。

关系图

为了更好地理解学生与其成绩的关系,下面的 Mermaid 关系图清晰地展示了学生与成绩之间的关系:

STUDENT String name Integer score CLASS belongs_to

其他跳过元素的方式

虽然使用 continue 关键字是最直接的方式来跳过 foreach 循环中的某些元素,但在不同的条件下也可以考虑其他的迭代方式。例如,使用常规的 for 循环或 Java 8 引入的流(Stream)API。

使用传统的 for 循环
for (int i = 0; i < students.size(); i++) {
    Student student = students.get(i);
    if (student.getScore() <= 60) {
        continue;
    }
    System.out.println(student.getName());
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
使用 Stream API

Java 8 及以上版本提供了流(Stream)API,能够使我们使用更简洁的代码来解决这些问题:

students.stream()
        .filter(student -> student.getScore() > 60)
        .forEach(student -> System.out.println(student.getName()));
  • 1.
  • 2.
  • 3.

这种方式不仅使代码更加简洁,而且函数式编程的风格让代码更易读。

结论

在 Java 中,跳过 foreach 循环中的特定元素可以通过使用 continue 关键字轻松实现。通过本示例,我们了解了如何在实际程序中运用这一特性,同时也探讨了其他可行的实现方式。

在编写更复杂的 Java 应用程序时,选择适合自己需求的循环方式和条件判断可以大大提升代码的可维护性和可读性。如果你使用 Java 8 或更高版本,推荐使用流(Stream)API 来处理集合,通常能带来更优雅和简洁的解决方案。

希望本文能帮助你更好地理解 Java 中的 foreach 循环及其灵活性。