Lsit部分相同项合并,其余相加

背景:有一个针对javaBean的List,javaBean里面有6个元素,现在要将Lsit里面前面3个属性相同的数据合并成一条数据,后面3个属性相加,得到一个新的List。


package com.cn;


import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Test {


/**
* @param args
*/
public static void main(String[] args) {
List<Test> list1 = new ArrayList<Test>();
Test a = new Test();
a.setA("1");
a.setB("1");
a.setC("1");
a.setD(new BigDecimal(1));
a.setE(new BigDecimal(1));
a.setF(new BigDecimal(1));
list1.add(a);

Test a1 = new Test();
a1.setA("1");
a1.setB("1");
a1.setC("1");
a1.setD(new BigDecimal(1));
a1.setE(new BigDecimal(1));
a1.setF(new BigDecimal(1));
list1.add(a1);

Test a2 = new Test();
a2.setA("2");
a2.setB("2");
a2.setC("2");
a2.setD(new BigDecimal(2));
a2.setE(new BigDecimal(2));
a2.setF(new BigDecimal(2));
list1.add(a2);

Test a3 = new Test();
a3.setA("2");
a3.setB("2");
a3.setC("2");
a3.setD(new BigDecimal(3));
a3.setE(new BigDecimal(3));
a3.setF(new BigDecimal(3));
list1.add(a3);

Test a4 = new Test();
a4.setA("2");
a4.setB("2");
a4.setC("2");
a4.setD(new BigDecimal(4));
a4.setE(new BigDecimal(4));
a4.setF(new BigDecimal(4));
list1.add(a);

Test a5 = new Test();
a5.setA("3");
a5.setB("3");
a5.setC("3");
a5.setD(new BigDecimal(5));
a5.setE(new BigDecimal(5));
a5.setF(new BigDecimal(5));
list1.add(a5);

List<Test> list2 = new ArrayList<Test>();
Map<String,Test> groupMap = new HashMap<String,Test>();
for(Test list : list1)

{
String key = list.getA() + list.getB() + list.getC(); 
Test  test = groupMap.get(key);
if(null == test)
{
groupMap.put(key,list);
}
else
{
test.setD(test.getD().add(list.getD()));
test.setE(test.getE().add(list.getE()));
test.setF(test.getF().add(list.getF()));
}
}
Collection<Test> collection = groupMap.values();
if(null != collection)
{
list2.addAll(collection);
}

System.out.println("合并后的list列表="+list2);
}

private String A;

private String B;

private String C;

private BigDecimal D;

private BigDecimal E;

private BigDecimal F;


.......省略 abcdef 的get、set方法...



}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值