【问题标题】:Loop index in java 8 [duplicate]java 8中的循环索引[重复]
【发布时间】:2026-01-23 08:10:02
【问题描述】:

有没有办法使用流来写这段代码:

    for (int i = 0; i < list.size(); i ++) {
        if (i % 1000 == 0) {
           doSomething();
        }
        doSomethingElse(list.get(i));
   }

谢谢!

【问题讨论】:

  • 您的意思是doSomethingElse(list.get(i)); 吗?

标签: loops java-8 java-stream


【解决方案1】:

您可以为此使用IntStream...但是您为什么要这样做?它看起来与您编写的内容基本相同,但由于IntStream 在这里并不真正需要,所以会产生一些开销。

IntStream.range(0, list.size())
         .forEach(i -> {
           if (i % 1000 == 0) {
             doSomething();
           }
           doSomethingElse(list.get(i));
         });

不知道doSomethingdoSomethingElse 做什么,很难提出更好的建议。也许您想(或应该?)事先对列表进行分区?

【讨论】:

  • 你是对的。我认为使用流的代码会不那么冗长,但在这种情况下,不需要使用主题。谢谢!