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);
}
}
}
}