62,614
社区成员
发帖
与我相关
我的任务
分享
有一个List<a> list类型的list如下
a.name1 a.name2 num
1 x 12
1 y 2
2 z 3
3 q 3
4 f 12
4 z 5
分组之后得到
a.name1 a.name2 num
1 x 12
1 y 2
1合计 null 14
2 z 3
3 q 3
4 f 12
4 z 5
4合计 null 5
有多行name1的就相加num 然后在list里新增一条合计,没有多行name1的 就不管
//先按a.name1排序
Collections.sort(list, new Comparator<a>() {
public int compare(a o1, a o2) {
if (o1 == null) {return ((o2==null) ? 0 : -1);}
else if (o2 == null) {return 1;}
else if (o1.name1 == null) {return ((o2.name1==null) ? 0 : -1);}
else if (o2.name1 == null) {return 1;}
else {return Integer.valueOf(o1.name1).compareTo(Integer.valueOf(o2.name1));}
}
});
//再求和
List<a> result = new ArrayList<a>();
String lastName = list.get(0).name1;
int sum = 0;
for (a aa : list) {
if (lastName.equals(aa.name1)) { //这里自己考虑null的判断吧
sum += aa.num;
} else {
a aaa = new a();
aaa.name1 = lastName;
aaa.name2 = null;
aaa.num = sum;
result.add(aaa);
lastName = aa.name1;
sum = aa.num;
}
result.add(aa);
}