我是靠谱客的博主 丰富哈密瓜,最近开发中收集的这篇文章主要介绍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方法...



}

最后

以上就是丰富哈密瓜为你收集整理的Lsit部分相同项合并,其余相加的全部内容,希望文章能够帮你解决Lsit部分相同项合并,其余相加所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(248)

评论列表共有 0 条评论

立即
投稿
返回
顶部