【发布时间】:2022-01-09 23:21:21
【问题描述】:
我有多个元素的集合, 就像
id: 18 quantity:20
id: 18 quantity:70
id: 21 quantity:50
我如何获取这个收藏并制作它:
id:18 quantity:90
id:21 quantity:50
我正在使用java
【问题讨论】:
标签: java collections
我有多个元素的集合, 就像
id: 18 quantity:20
id: 18 quantity:70
id: 21 quantity:50
我如何获取这个收藏并制作它:
id:18 quantity:90
id:21 quantity:50
我正在使用java
【问题讨论】:
标签: java collections
您可能希望将其收集到地图中,如下所示:
public class Playground {
public static void main(String... args) {
List<ArticlePos> articlePos = Arrays.asList(new ArticlePos("18", 20), new ArticlePos("18", 70), new ArticlePos("21", 50));
Map<String, Integer> collected = articlePos.stream().collect(Collectors.toMap(ArticlePos::getId, ArticlePos::getAmount, Integer::sum));
collected.entrySet().forEach(System.out::println);
}
private static class ArticlePos {
public ArticlePos(String id, Integer amount) {
this.id = id;
this.amount = amount;
}
public String id;
public Integer amount;
public String getId() {
return id;
}
public Integer getAmount() {
return amount;
}
}
}
由于您没有展示很多代码,因此您当然需要根据自己的情况自行实现。所以这不是一个真正的复制粘贴解决方案。不过,这很简单。
Collectors.toMap() 需要 KeyMapper-、ValueMapper- 和 Merge-Function。对于 KeyMapper,我只是简单地使用 ID-Getter,对于 Value-Amount-Getter,最终合并金额显然会相互叠加。
【讨论】: