现在两列数据如下:
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); }