求 arraylist 像sql group by 同样分组合计
求 arraylist 像sql group by 一样分组合计
类 objectA 属性 money ,weight ,height ,name,。。。。。等
现有一个arraylist 是 objectA 的集合
类 objectB 就4个属性 money ,weight ,height ,name
objectB 就像 select name, sum(money ),sum(weight),sum(height ) group by name 的效果
想得到一个新的arraylist
新的 arraylist 是 objectB 的集合
------解决方案--------------------
用Map帮忙,Group By有多少个字段,就将这些个字段组合成一个Key,对应的value就是合计信息
你这里只有一个group by,直接用name即可
类 objectA 属性 money ,weight ,height ,name,。。。。。等
现有一个arraylist 是 objectA 的集合
类 objectB 就4个属性 money ,weight ,height ,name
objectB 就像 select name, sum(money ),sum(weight),sum(height ) group by name 的效果
想得到一个新的arraylist
新的 arraylist 是 objectB 的集合
------解决方案--------------------
用Map帮忙,Group By有多少个字段,就将这些个字段组合成一个Key,对应的value就是合计信息
你这里只有一个group by,直接用name即可
public static List<B> summary(List<A> list) {
Map<String, B> map = new LinkedHashMap<String, B>();
for (A a : list) {
String name = a.getName();
B b = map.get(name);
if (b == null) {
b = new B();
b.setName(name);
map.put(name, b);
}
b.setMoney(b.getMoney() + a.getMoney());
b.setWeight(b.getWeight() + a.getWeight());
b.setHeight(b.getHeight() + a.getHeight());
}
return new ArrayList<B>(map.values());
}