gpt4 book ai didi

java - 我可以内联这些流运算符序列吗?

转载 作者:行者123 更新时间:2023-12-01 17:50:32 24 4
gpt4 key购买 nike

我有以下代码:

public List<PolygonStat> groupItemsByTypeAndWeight(List<Item> items)
{
Map<Type, List<Item>> typeToItem = items
.stream()
.collect(
Collectors.groupingBy(
item -> item.type,
Collectors.toList()
)
);
// For some reason we want to make a distinction between weighted items within type
ArrayList<WeightedItem> weightedItems = new ArrayList<>();
typeToItem.forEach(
// List to list function
(type, items) -> weightedItems.addAll(createWeightedList(type, items))
);
return weightedItems;
}

我不太喜欢我的创建方式 ArrayList<WeightedItem> weightedItems = new ArrayList<>();这里。有没有机会减少到1 return运算符(即: return items.stream().(...).toList() 。我考虑过使用 flatMapforEach 对于 .entrySet 应该返回 void

最佳答案

您可以不将中间结果保存到映射中,而只需从其entrySet 创建一个新流。然后通过使用 map() 操作,您可以将每个条目映射到新的 WeightedItem

public List<PolygonStat> groupItemsByTypeAndWeight(List<Item> items){
return items.stream()
.collect(Collectors.groupingBy(item -> item.type))
.entrySet()
.stream()
.map(entry -> createdWeightedList(entry.getKey(), entry.getValue()))
.flatMap(Collection::stream)
.collect(Collectors.toList());
}

关于java - 我可以内联这些流运算符序列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50682786/

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