gpt4 book ai didi

java - 流列表上的 IllegalStateException

转载 作者:行者123 更新时间:2023-12-02 11:27:18 27 4
gpt4 key购买 nike

List<String> list2 = Arrays.asList("hello", "hi", "你好");  
List<String> list3 = Arrays.asList("zhangsan", "lisi", "wangwu", "zhaoliu");

List<Stream<String>> list2Result = list2.stream().map(item -> list3.stream().map(item2 -> item + " " + item2)).collect(Collectors.toList());

list2Result.forEach(item -> item.collect(Collectors.toList()));
list2Result.forEach(item -> item.forEach(System.out::println));

我必须将 list2Result 转换为 List<List<String>> ,但我不能使用 foreach 来打印它。

Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed at java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.util.stream.ReferencePipeline.forEach(Unknown Source) at com.singhand.proxyServer.Main.lambda$15(Main.java:61) at java.util.ArrayList.forEach(Unknown Source) at com.singhand.proxyServer.Main.main(Main.java:61)

最佳答案

您不能操作同一个Stream两次。

尝试收集第一个 map 中的列表。

List<List<String>> list2Result = list2.stream()
.map(item -> list3.stream()
.map(item2 -> item + " " + item2)
.collect(Collectors.toList()))
.collect(Collectors.toList());

并以同样的方式打印列表列表

list2Result.forEach(item -> item.forEach(System.out::println));
<小时/>

如果您想要一个扁平列表,请尝试在将多个流扁平化为一个的 flatMap 之前使用来收集列表。

List<String> list2Result = list2.stream()
.map(item -> list3.stream()
.flatMap(item2 -> item + " " + item2))
.collect(Collectors.toList());

然后您将获得可以打印的字符串列表

list2Result.forEach(System.out::println);

关于java - 流列表上的 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49525048/

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