用lambda表达式替换for-each循环

20 *_*fps 2 java foreach java-8 java-stream

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

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

这是一种响应链模式.我需要为列表中的每个检查器设置下一个检查器,不包括最后一个检查器.

还是找不到在这里使用Stream API的方法:)

Ous*_* D. 5

使用IntStream.range:

IntStream.range(1, checkers.size())
         .forEach(i -> checkers.get(i-1).setNextChecker(checkers.get(i)));
Run Code Online (Sandbox Code Playgroud)

或使用for循环:

for (int i = 1; i < checkers.size(); i++) 
      checkers.get(i-1).setNextChecker(checkers.get(i));
Run Code Online (Sandbox Code Playgroud)