合并有重复列的行
现在两列数据如下:
1000 10001
想要把第一列相同的行的第二列合并起来。
现在两列数据如下:
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);
}