Java 翻转集合中的标志
我们有一个合格的学生名单-Java 翻转集合中的标志,java,java-8,Java,Java 8,我们有一个合格的学生名单-名单 我们需要将所有符合条件的学生的默认值设置为状态。通过 Java 8是否有比for(student in students)循环更好/更短的选项?对于更短的实现,可以使用forEach(): 对于更高性能的实现,传统的For循环可能会缩短几毫秒,具体取决于编译器/运行时优化: for (int i = 0; i < students.size(); i++) { students.get(i).status = Status.PASSED; } fo
名单
我们需要将所有符合条件的学生的默认值设置为状态。通过
Java 8是否有比for(student in students)
循环更好/更短的选项?对于更短的实现,可以使用forEach()
:
对于更高性能的实现,传统的For
循环可能会缩短几毫秒,具体取决于编译器/运行时优化:
for (int i = 0; i < students.size(); i++) {
students.get(i).status = Status.PASSED;
}
for(int i=0;i
您可以使用forEach
实现以下目的:
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));
在将标志设置为状态之前,需要传递一个事件。传递了@VishwaRatna什么事件?问题没有提供任何事件的细节;它只是说“活动结束后,我们需要设置…”。或者你指的是一个条件而不是一个事件?还是争论?问题中也没有关于条件或论点的内容…在事件发生后,我们需要将所有合格学生的默认值设置为状态。通过事件是解决方案的一部分,不是吗?@VishwaRatna“我们有一个合格学生的列表。在事件发生后,我们需要设置所有合格学生的默认值…”我们有一个合格学生的列表,列表(学生s:Students)
有什么问题,就用它吧。Java8没有提供任何更好的替代方案。@Naman等人。如果你发现这个问题有一个很好的副本,我完全赞成这个副本,但目前存在的副本根本没有解决这个问题。问题中没有任何地方提到条件或过滤。@RobbyCornelissen同意您的意见,并且没有将其标记为重复。@RobbyCornelissen我很遗憾错过了细节。谢谢你这么说。我希望更新的链接能够解决当前的问题。
students.stream()
.filter(s -> hasPassed(s))
.forEach(s -> s.setStatus(STATUS.PASSED));
students.forEach(s -> s.setStatus(hasPassed(s) ? STATUS.PASSED : Status.NONE));