java - 将 for-each 循环替换为 lambda 表达式

标签 java foreach java-8 java-stream

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

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

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

这里仍然找不到使用 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 - 将 for-each 循环替换为 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50006972/

相关文章:

java - 阻止用户访问每个 wsdl 元素

java - java 中 100% 竞争自由代码的同步替代方案

java - 使用 String hashCode() 方法?

jquery - .jquery 中的每个循环查找指向特定位置的所有 anchor 并更改类

java - 从日期列表中获取平均值

java - 在 Java 8 中使用Optional.empty 默认可选 orElse

java - Netbeans (7.3) - 如何在一个项目中创建 'Java Web app' 和 HTML/JavaScript 'HTML 5 Application'?

带有 URLConnection 的 Java 基本授权

php - 当 SUM 用于特定条件时,如何避免在 FOREACH block 中进行 MySQL 查询?

java - 将 foreach 循环与另一个类中的方法结合使用 (Java)