【发布时间】:2025-12-11 13:25:04
【问题描述】:
我正在尝试学习 java - 流。我能够做简单的迭代/过滤/映射/收集等。
当我尝试收集每 3 个元素并按此示例中所示打印时,[收集每 3 个元素并打印等等...]
List<String> list = Arrays.asList("a","b","c","d","e","f","g","h","i","j");
int count=0;
String append="";
for(String l: list){
if(count>2){
System.out.println(append);
System.out.println("-------------------");
append="";
count=0;
}
append = append + l;
count++;
}
System.out.println(append);
输出:
abc
-------------------
def
-------------------
ghi
-------------------
j
我不知道如何使用流来做到这一点。我应该实现自己的收集器来实现这一点吗?
【问题讨论】:
-
流是错误的做法。使用流时,您应该对每个元素执行 无状态操作,以便它们可以并行执行和/或在需要时以任何顺序执行。然而,元素的计数器 是 一个状态。您最好使用常规的
for循环。 -
另外,您可以使用来自 Guava 的
Iterables.partition。
标签: java java-8 java-stream