java8 stream多次map_java8streamapi:如何将列表转换为在列表中具有重复键的Map<Long,Set>?...

我有一个具有以下字段的类:

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()));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值