日期:2014-05-20  浏览次数:20669 次

两个list中,某字段相等处理,求助
两个list的字段一样,listA的A字段值很全,B字段都为0,listB中的A字段的值不全,但值一定在listA中存在,B字段为有效值。
要求:
把listB中的B字段,放到对应的listA中,  

listA
A B
a 0
b 0
c 0

listB
A B
a 1
c 3

结果
listA
A B
a 1
b 0
c 3


怎么写代码呢??谢谢了




------解决方案--------------------
Java code

ArrayList<XObject> listA,listB;
//......
for (int i=0; i<listB.size(); i++) {
  for (int j=0; j<listA.size(); j++) {
    if (listA.get(j).A.equals(listB.get(i).A))
      listA.get(j).B = listB.get(i).b;
  }
}

------解决方案--------------------
数据量不大,1楼的就可以
数据量大的话,最好先排序
------解决方案--------------------
Java code

class YourListStruct {
    public String A;
    public int B;
    
    static public void put(YourListStruct[] listA, YourListStruct[] listB) {
        Hashtable<String, YourListStruct> lsA = new Hashtable<String, YourListStruct>();
        for (int i = 0; i < listA.length; i++)
            lsA.put(listA[i].A, listA[i]);
        for (int i = 0; i < listB.length; i++) {
            YourListStruct e = lsA.get(listB[i].A);
            if (e != null)
                e.B =  listB[i].B;
        }
    }
}

------解决方案--------------------
探讨
java集合中没有什么简单一点的方法可以用么?

------解决方案--------------------
探讨

Java code

ArrayList<XObject> listA,listB;
//......
for (int i=0; i<listB.size(); i++) {
for (int j=0; j<listA.size(); j++) {
if (listA.get(j).A.equals(listB.get(i).A))
listA.get(j).B = ……

------解决方案--------------------
HashMap
------解决方案--------------------
探讨
Java code


ArrayList<XObject> listA,listB;
//......
for (int i=0; i<listB.size(); i++) {
for (int j=0; j<listA.size(); j++) {
if (listA.get(j).A.equals(listB.get(i).A))
listA.get(……