java第一列相同的行的第二列合并

时间:2021-12-08 15:04:52
合并有重复列的行
现在两列数据如下:
1000    10001

2000    20001

2000    20002

3000    30001

3000    30002

3000    30003

这样的格式,第一列有重复,
想要把第一列相同的行的第二列合并起来。

如下所示的格式:

1000 : 10001
2000 : 20001,20002
3000 : 30001,30002,30003


代码如下:

List<Event> listA = new ArrayList<Event>();
		List<Event> listB = new ArrayList<Event>();
		Event evt = null;
		//构造伪数据
		for(int i=1;i<2;i++)
		{
			evt = new Event();
			evt.setName("1000");
			evt.setAge("1000"+i);
			listA.add(evt);
		}
		for(int i=1;i<3;i++)
		{
			evt = new Event();
			evt.setName("2000");
			evt.setAge("2000"+i);
			listA.add(evt);
		}
		for(int i=1;i<4;i++)
		{
			evt = new Event();
			evt.setName("3000");
			evt.setAge("3000"+i);
			listA.add(evt);
		}
		//拷贝集合
		listB.addAll(listA);
		
		List<String> listTemp = new ArrayList<String>();
		//循环集合A
		for(int i=0;i<listA.size();i++)
		{
			StringBuffer sbA = new StringBuffer();
			//把第每一次的第一列找出来
			sbA.append(listA.get(i).getName()).append(": ");
			for(int j=0;j<listB.size();j++)
			{
				//如果存在集合A和集合B相同的第一列,则把第二列的数据追加
				if(listA.get(i).getName().equals(listB.get(j).getName()))
				{
					sbA.append(listB.get(j).getAge()).append(",");
				}
			}
			//最后把组装好的数据放入临时数组
			listTemp.add(sbA.toString());
		}
		//因为最后可能存在相同的行,这里去除重复项
		List<String> list = new ArrayList<String>();
		for(String str : listTemp)
		{
			if(!list.contains(str))
			{
				list.add(str);
			}
		}
		System.out.println("最后的数据格式如下:");
		for(String str : list)
		{
			if(str.endsWith(","))
			{
				str = str.substring(0,str.length() - 1);
			}
			System.out.println(str);
		}