gpt4 book ai didi

java - 从 Java 8 中的流中收集同步数组列表

转载 作者:搜寻专家 更新时间:2023-11-01 01:21:00 31 4
gpt4 key购买 nike

List<String> result = map.entrySet()
.stream()
.map(Map.Entry::getValue)
.flatMap(x -> x.stream())
.collect(Collectors.toCollection(ArrayList::new));

上面的代码将创建一个非线程安全的 ArrayList。那么如何使它线程安全。

最佳答案

如果你想要一个同步的集合,你可以改变你的收集器来提供你想要的实现,例如:

.collect(Collectors.toCollection(() -> Collections.synchronizedList(new ArrayList<> ()));

或者如果您更喜欢并发集合:

.collect(Collectors.toCollection(CopyOnWriteArrayList::new));

在后一种情况下,使用复制构造函数来避免不必要的底层数组复制可能更有效。

关于java - 从 Java 8 中的流中收集同步数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30840857/

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