使用流java将列表分组

时间:2018-04-19 00:16:54

标签: java arraylist

我的列表看起来像这样:

列表

[{
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。

我该怎么做?

2 个答案:

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