gpt4 book ai didi

Java - Stream - 收集每 N 个元素

转载 作者:太空狗 更新时间:2023-10-29 22:59:41 25 4
gpt4 key购买 nike

我正在尝试学习 java - stream。我能够进行简单的迭代/过滤/映射/收集等。

当我尝试收集每 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

我不知道如何使用流来执行此操作。我应该实现我自己的收集器来实现这一目标吗?

最佳答案

您实际上可以使用 IntStream模拟列表的分页。

List<String> list = Arrays.asList("a","b","c","d","e","f","g","h","i","j");

int pageSize = 3;

IntStream.range(0, (list.size() + pageSize - 1) / pageSize)
.mapToObj(i -> list.subList(i * pageSize, Math.min(pageSize * (i + 1), list.size())))
.forEach(System.out::println);

哪些输出:

[a, b, c]
[d, e, f]
[g, h, i]
[j]

如果要生成字符串,可以使用String.join因为你正在处理 List<String>直接:

.mapToObj(i -> String.join("", list.subList(i * pageSize, Math.min(pageSize * (i + 1), list.size()))))

关于Java - Stream - 收集每 N 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com