У меня есть следующий код:
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<>();
здесь.Есть ли возможность уменьшить его до одного return
оператора (т.е.: return items.stream().(...).toList()
. Я думал об использовании flatMap
, но forEach
для .entrySet
должно вернуть void
.