gpt4 book ai didi

java - 如何用java流添加所有内容?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:11 26 4
gpt4 key购买 nike

如何使用 java 8 添加所有内容?

processeditemList is a Map<Integer, Map<Item, Boolean>> 

至于现在我在做什么:

List<Item> itemList = Lists.newLinkedList();
for (Map<Item, Boolean> entry : processeditemList.values()) {
itemList.addAll(entry.keySet());
}
return itemList;

最佳答案

您可以使用 flatMap .它用于将多个流合并为一个流。所以在这里你需要创建一个集合流,然后从它们中的每一个创建一个流:

processeditemList.values().stream()
.map(Map::keySet) // Stream<Set<Item>>
.flatMap(Set::stream) // convert each set to a stream
.collect(toList()); // convert to list, this will be an ArrayList implmentation by default

如果你想改变默认的 List 实现,那么你可以使用下面的收集器:

Collectors.toCollection(LinkedList::new)

如果您不知道列表的最终大小,并且您执行的插入操作多于读取操作,那么 LinkedList 会很好。

ArrayList 恰恰相反:你读的多,添加/删除的少。因为引擎盖下的 ArrayList 包含一个数组,在添加新元素时必须重新缩放,但在删除元素时永远不会减少。

关于java - 如何用java流添加所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43625683/

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