如何操作list

gcw633 2010-01-15 11:17:24
如何将这2个list合并成一个list
listA=[objectc,objecte,objecth,objectp];
objectc=[aa,123,542]
objecte=[ww,524,865];
objecth=[qq,458,632];
objectp=[gg,758,632];

listB=[objectq,objectb,objecty];
objectq=[qq,532,751];
objectb=[aa,265,325];
objecty=[gg,952,156];

如何将这2个list合并成一个list,结果如下
Listx=[object1,object2,object3,object4];
其中
object1=[aa,123,542,265,325];
object2=[ww,524865];
object3=[qq,458,362,532,751];
object4=[gg,758,632,952,156];
注:listA与listB都是从数据库读取的,他们的size都不是固定的
...全文
153 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
duannianping 2010-01-15
  • 打赏
  • 举报
回复

listA
listB
for(int i=0;i<listB.size();i++)
{
listA.add(listB.get(i));
}
ruoye_2008 2010-01-15
  • 打赏
  • 举报
回复
楼上说的有理,因为你里面是根据aa、ww、gg等进行合并的,这就相当于key,所以一开始不要放在List中,而是要放在Map里,这样在合并时,进行判断就行了
qianzhimeiying 2010-01-15
  • 打赏
  • 举报
回复
Hashtable<String,LinkedHashSet<Object>> ht = new Hashtable<String,LinkedHashSet<Object>>();
for(int i=0;i<listA.size();i++){
String[] ss = (String[])(listA.get(i));
LinkedHashSet<Object> set = new LinkedHashSet<Object>();
set.addAll(Arrays.asList(ss));
ht.put(ss[0], set);
}

for(int i=0;i<listB.size();i++){
String[] ss = (String[])(listB.get(i));
LinkedHashSet<Object> set = new LinkedHashSet<Object>();
set.addAll(Arrays.asList(ss));
if(ht.get(ss[0])!=null){
LinkedHashSet<Object> value = ht.get(ss[0]);
value.addAll(set);
ht.put(ss[0], value);
}
else{
ht.put(ss[0], set);
}
}

Iterator it = ht.keySet().iterator();
while(it.hasNext()){
String key = (String)(it.next());
LinkedHashSet value = ht.get(key);
Iterator it1 = value.iterator();
while(it1.hasNext()){
System.out.print(it1.next()+" ");
}
System.out.println();
}
}
qianzhimeiying 2010-01-15
  • 打赏
  • 举报
回复
map.put(key,map.get(key).addAll(value2));
qianzhimeiying 2010-01-15
  • 打赏
  • 举报
回复
使用map,每个list元素的第一个字段作为key,整个元素作为一个set类型的value
for(list1){
map.put(key,value);
}
for(list2){
if(map.get(key!=null)){
map.put(map.get(key).addAll(value2));
}
}
gcw633 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 phyerbarte 的回复:]
Java codepublicstaticvoid main(String[] args) {
List listA=new ArrayList();
List listB=new ArrayList();

Object[] objectc=new Object[]{"aa","123","542"};
Object[] objecte=new Object[]{"ww","524","865"};
Object[] objecth=new Object[]{"qq","458","632"};
Object[] objectp=new Object[]{"gg","758","632"};

listA.add(objectc);
listA.add(objecte);
listA.add(objecth);
listA.add(objectp);

Object[] objectq=new Object[]{"gg","532","751"};
Object[] objectb=new Object[]{"aa","265","325"};
Object[] objecty=new Object[]{"gg","952","156"};

listB.add(objectq);
listB.add(objectb);
listB.add(objecty);

listA.addAll(listB);for(int i=0;i<listA.size();i++){
Object[] tmp= (Object[])listA.get(i);
System.out.println(tmp[0]+","+tmp[1]+","+tmp[2]);
}
}
编完了发现不对
[/Quote]
是啊,我要将里面的的数据相同的合并起来
你这样的结果是:
aa,123,542
ww,524,865
qq,458,632
gg,758,632
gg,532,751
aa,265,325
gg,952,156
cweijiaweil 2010-01-15
  • 打赏
  • 举报
回复
listA.addAll(listB);
phyerbarte 2010-01-15
  • 打赏
  • 举报
回复

public static void main(String[] args) {
List listA = new ArrayList();
List listB = new ArrayList();

Object[] objectc = new Object[]{"aa","123","542"};
Object[] objecte = new Object[]{"ww","524","865"};
Object[] objecth = new Object[]{"qq","458","632"};
Object[] objectp = new Object[]{"gg","758","632"};

listA.add(objectc);
listA.add(objecte);
listA.add(objecth);
listA.add(objectp);

Object[] objectq = new Object[]{"gg","532","751"};
Object[] objectb = new Object[]{"aa","265","325"};
Object[] objecty = new Object[]{"gg","952","156"};

listB.add(objectq);
listB.add(objectb);
listB.add(objecty);

listA.addAll(listB);

for(int i=0;i<listA.size();i++){
Object[] tmp = (Object[])listA.get(i);
System.out.println(tmp[0]+","+tmp[1]+","+tmp[2]);
}
}

编完了发现不对
Aniao 2010-01-15
  • 打赏
  • 举报
回复
List.addAll(List list2)
notlogin 2010-01-15
  • 打赏
  • 举报
回复
没问题的,用arraylist 的add方法就行,把arraylist[0]位相同的放在同一个arraylist 里面,然后再把每个arraylist(就是你的object) 放到一个"大"的list里
ouyangyh 2010-01-15
  • 打赏
  • 举报
回复
支持使用Map,这种类型最好使用Map

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧