【发布时间】:2018-02-11 05:39:21
【问题描述】:
假设我有一个如下列表
Collection<?> mainList = new ArrayList<String>();
mainList=//some method call//
目前,我将列表中的元素显示为
System.out.println(mainList.stream().map(Object::toString).collect(Collectors.joining(",")).toString());
我得到的结果是
a,b,c,d,e,f,g,h,i
如何通过在java中列表中的每个第三个元素后添加一个新行来打印此列表,以便它将打印结果如下
a,b,c
d,e,f
g,h,i
注意:这类似于 How to Add newline after every 3rd element in arraylist in java?。但是格式化文件是在读取自身时完成的。 我想在打印输出时这样做。
【问题讨论】:
-
在我看来,您的问题比输出更基本。这里真正的问题是:如何以 X 组的形式获取流中的元素?很惊讶没有在
Collectors中找到这样做的东西。您可能可以创建自己的Collector来完成它,生成Lists 作为输出。 -
@T.J.Crowder 显然有 Guava 和 Apache Commons 中的课程可以做到这一点 - baeldung.com/java-list-split
-
@T.J.Crowder
Collectors.groupingBy(predicate).values()可以将列表划分为子列表列表。我已经建立了我的答案。 -
@SzymonStepniak:啊,我应该想到把柜台放在这样的容器里。
-
我不得不怀疑,鉴于
.collect是一个终端操作,而您显然只是将它们用于此列创建任务,为什么还要为使用 Streams 的开销而烦恼呢?
标签: java arraylist lambda java-8