如何从java中的另一个列表中查找一个列表中的项目

时间:2013-03-21 20:27:59

标签: java list iteration

我有2个列表,我正在迭代list1 ..如果list1中的当前项目存在于list2中,那么我需要对list1的属性进行更改。

列表只是对象列表:

list1 = [ObjectVO, ObjectVO]
list2 = ['w', 'x', 'y', 'z']

其中ObjectVO.getId()将返回一个字符串,例如'w',...'z'

我的代码如下:

Iterator it = list1.iterator();
while(it.hasNext()){
    objVO = (ObjectVO) it.next();
    if(list2.contains(objVO.getId()){
        objVO.setFlag(true);  
    }
}

这里的问题是objVO.setFlag(true)总是被执行!像list2包含列表1中的所有项目,但事实并非如此,列表2只是list1的一个子集,所以它不应该为所有项目评估为真。

我该如何解决这个问题,还是有更好的方法来实现这个目标?

2 个答案:

答案 0 :(得分:3)

为什么不迭代第二个列表?,

for(ObjectVO objVO : list2){
    objVO.setFlag(list1.contains(objVO.getId()));
}

答案 1 :(得分:0)

您可以将第二个列表转换为相同的数据类型,以便它具有可比性,并使用Apache Commons集合来查找交集。只需将所有ObjectVO.getId()放入一个列表中即可。

Collection intersection = CollectionUtils.intersection(a, b);