我有一个具有以下字段的类:
public class Item{
private String name;
private Long category;
private Set containers;
}
我要做的是
List items
变成一个
Map>
使用Java 8流API。
现在我可以用
Itarable
还有一些
if
,就像这样:
List items = getItems();
Iterator itemsIterator = items.iterator();
Map> containersByCategoryMap = new HashMap<>();
while (itemsIterator.hasNext()) {
Item item = itemsIterator.next();
Long category = item.getCategory();
Set containers = item.getContainers();
if (containersByCategoryMap.containsKey(category)) {
Set containersByCategory = containersByCategoryMap.get(category);
containersByCategory.addAll(containers);
} else {
Set containersByCategory = new HashSet<>(containers);
containersByCategoryMap.put(category, containersByCategory);
}
}
如何使用流API获得相同的结果?
我尝试了类似的方法,但显然我遇到了重复键异常,因为每个类别都有多个项。。。
containersByCategoryMap = items.stream().collect(Collectors.toMap(item -> item.getCategory(), item -> item.getContainers()));