【发布时间】:2016-11-29 08:06:46
【问题描述】:
如何在迭代 Stream 时将计数器值添加到每个第 n 个项目?
这是我最简单的代码:
Stream.of("a1","a2","a3")
.map(x -> x + "counterValue")
.findFirst()
.ifPresent(System.out::println);
当我在每个 nth 项目中添加“counterValue”字符串时,我想要实现的是在每个第 n 个元素中添加 ith 值。
当前程序的输出为a1counterValue。
我希望输出为a10。 0 表示该元素的索引。
有人可以帮忙吗?
【问题讨论】:
-
第 i 个值是多少?
-
至少对我来说还不是很清楚,你想要实现什么。你能举个例子说明输入和期望的输出吗?
-
stackoverflow.com/q/18552005/3788176 最简单的方法是遍历索引流,然后您可以计算“每第 n 个项目”。但这取决于您的流的来源,您是否可以通过索引引用它的元素,或者您是否需要将两个流压缩在一起。
-
@AndyTurner 我之前检查过这个链接。但我不想使用 IntStream.range...
-
您需要索引,因此如果您不想使用共享的可变值,您将需要类似
Intstream.range的东西来跟踪索引。
标签: java java-8 java-stream counter