java合并元素为map的list

1 篇文章 0 订阅
1 篇文章 0 订阅

list的元素信息如下图所示:

 {GLRS=0, BMMC=部门1, XCZY=57},   {GLRS=7, BMMC=部门1, XCZY=0}, 
 {GLRS=0, BMMC=部门2, XCZY=14},   {GLRS=4, BMMC=部门2, XCZY=0}, 
 {GLRS=0, BMMC=部门3, XCZY=66},   {GLRS=9, BMMC=部门3, XCZY=0}, 
 {GLRS=0, BMMC=部门4, XCZY=1},    {GLRS=1, BMMC=部门4, XCZY=0}, 
 {GLRS=0, BMMC=部门5, XCZY=23},   {GLRS=1, BMMC=部门5, XCZY=0}, 
 {GLRS=0, BMMC=部门6, XCZY=25},   {GLRS=1, BMMC=部门6, XCZY=0}, 
 {GLRS=0, BMMC=部门7, XCZY=114},  {GLRS=4, BMMC=部门7, XCZY=0},
 {GLRS=0, BMMC=部门8, XCZY=3}, 
 {GLRS=0, BMMC=部门9, XCZY=1}, 
 {GLRS=0, BMMC=部门10, XCZY=3}, 
 {GLRS=0, BMMC=部门11, XCZY=1}, 
 {GLRS=0, BMMC=部门12, XCZY=5}, 
 {GLRS=0, BMMC=部门24, XCZY=2}, 
 {GLRS=0, BMMC=部门25, XCZY=1}, 
 {GLRS=0, BMMC=部门26, XCZY=16}, 
 {GLRS=0, BMMC=部门27, XCZY=3}, 
 {GLRS=0, BMMC=部门28, XCZY=2}

现需求是将BMMC对应的VALUE值相同的元素合并,合并后两条数据成一条数据,GLRS相加,XCZY相加。思路为,先将list拆分成两个list,然后做循环处理,代码如下:

//此处list为将数据拆分出来的list
List<Map<String,Object>> glList = new ArrayList<Map<String,Object>>();
//tjList是原始list,倒叙循环		
for (int i = tjList.size()-1; i >= 0; i--)
{
    //获取GLRS对应的value值
	String strGlrs = tjList.get(i).get("GLRS").toString();
    //将strGlrs不为0的map添加的新的list中
	if (!"0".equals(strGlrs))
	{
		glList.add(tjList.get(i));
        //原始list删除元素
		tjList.remove(i);
	}
}

//遍历新的list		
if (glList.size() > 0)
{
	for (int i = 0; i < glList.size(); i++)
	{
        //获取BMMC、GLRS对应的value
		String strBmmc = glList.get(i).get("BMMC").toString();
		String strGlrs = glList.get(i).get("GLRS").toString();
				
		for (int j = 0; j < tjList.size(); j++)
		{
			String strNewBmmc = tjList.get(j).get("BMMC").toString();
			String strXczy = tjList.get(j).get("XCZY").toString();
            //新旧listBMMC比对
			if (strBmmc.equals(strNewBmmc))
			{
				Map<String,Object> map = new HashMap<String, Object>();
				map.put("BMMC", strBmmc);
				map.put("GLRS", strGlrs);
				map.put("XCZY", strXczy);
                //更新原始list数据
			    tjList.set(j, map);
			}
		}
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值