提问者:小点点

翻转集合中的标志[重复]


我们有一个符合条件的学生列表-列表

Student {

    String name;
    ..........
    ..........
    Status status = Status.NONE;

}

我们需要将所有符合条件的学生的默认设置为STATUS. PASSED
Java8是否有比for(学生中的学生)循环更好/更短的选项?


共2个答案

匿名用户

对于更短的实现,您可以使用for各()

students.forEach(s -> s.status = Status.PASSED);

对于更高性能的实现,传统的for循环可能会减少几毫秒,具体取决于编译器/运行时优化:

for (int i = 0; i < students.size(); i++) {
    students.get(i).status = Status.PASSED;
}

匿名用户

您可以使用for每

students.forEach(s -> s.setStatus(STATUS.PASSED));

如果是有条件的,那么:

students.stream()
    .filter(s -> hasPassed(s))
    .forEach(s -> s.setStatus(STATUS.PASSED));

或者更短:

students.forEach(s -> s.setStatus(hasPassed(s) ? STATUS.PASSED : Status.NONE));