我的列表看起来像这样:
列表
[{
type: "1"
price: 10.0
count: 2
},
type: "1"
price: 15.0
count: 3
},
type: "2"
price: 20.0
count: 2
},
type: "2"
price: 30.0
count: 3
}]
我需要对此进行分组,以便我只有两种类型(在本例中)。
输出:
[{
type: "1"
price: 25.0
count: 5
},
type: "2"
price: 50.0
count: 5
}]
因此,基本上,列表中的元素数量将等于唯一类型的数量。价格和计数等其他价值将相加。
我尝试使用这个 -
report.stream().collect(Collectors.groupingBy(x -> x.getStuffe));
但是,这给了一张地图。我不需要Map,我需要一个List。
我该怎么做?
答案 0 :(得分:0)
尝试做类似的事情:
set row_display = 0
答案 1 :(得分:0)
你为什么需要溪流?这很容易在循环,hashmap聚合和最终转储值集合中完成。所有这些迭代基本上都是在流的引擎下完成的,所以它并不慢,只是更冗长。
HashMap map = new HashMap();
for(Item x: list){
Item old = map.put(x.type, x);
if(old!=null) {
x.price += old.price;
x.count += old.count;
}
}
return new ArrayList(map.values());