用lambda表达式替换for-each循环 [英] Replace for-each loop with lambda expression

查看:447
本文介绍了用lambda表达式替换for-each循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm just refactoring some of my old projects to use features of Java 8.

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

这有点像Resp连锁模式.而且我需要为列表中的每个检查器设置下一个检查器,最后一个检查器除外.

Here's kinda Chain of Resp pattern. And I need to set next checker for every checker in the list, excluding the last one.

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

Still can't find the way to use Stream API here :)

推荐答案

使用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));

这篇关于用lambda表达式替换for-each循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆