我只是在重构一些旧项目以使用Java 8的功能。

int counter = 1;
for (Checker checker : checkers) {
    if (counter < checkers.size()) {
        checker.setNextChecker(checkers.get(counter++));
    }
}


这有点连锁反应模式。我需要为列表中的每个检查器设置下一个检查器,最后一个检查器除外。

仍然在这里找不到使用Stream API的方法:)

最佳答案

使用IntStream.range

IntStream.range(1, checkers.size())
         .forEach(i -> checkers.get(i-1).setNextChecker(checkers.get(i)));


或使用for循环:

for (int i = 1; i < checkers.size(); i++)
      checkers.get(i-1).setNextChecker(checkers.get(i));

关于java - 用lambda表达式替换for-each循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50006972/

10-10 16:56