Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中从一个列表中查找另一个列表中的项目_Java_List_Iteration - Fatal编程技术网

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

如何在java中从一个列表中查找另一个列表中的项目,java,list,iteration,Java,List,Iteration,我有两个列表,我正在迭代列表1。。如果列表1中的当前项存在于列表2中,那么我需要更改列表1的属性 这些列表只是对象列表: list1 = [ObjectVO, ObjectVO] list2 = ['w', 'x', 'y', 'z'] 其中ObjectVO.getId()将返回一个字符串,如“w”、…“z” 我的代码如下: Iterator it = list1.iterator(); while(it.hasNext()){ objVO = (ObjectVO) it.next()

我有两个列表,我正在迭代列表1。。如果列表1中的当前项存在于列表2中,那么我需要更改列表1的属性

这些列表只是对象列表:

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)总是被执行!与列表2包含列表1中的所有项目一样,列表2也不是真的,列表2只是列表1的一个子集,所以它不应该对所有项目都求值为真


我该如何解决这个问题,或者有更好的方法来解决这个问题?

为什么不迭代第二个列表

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

为什么不迭代第二个列表呢

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

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

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

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

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

你能在objVO类中发布equals方法吗?这个对象没有equals方法,我试图比较两个字符串。从objVO.getId()和list2(strings的列表)中得到的一个可以在objVO类中发布equals方法吗?对于该对象没有equals方法,我尝试比较两个字符串。从objVO.getId()和list2(字符串列表)中得到的一个为什么要使用第三方库来完成这么简单的任务?我的意思是你的项目中通常会包含番石榴和apache commons中的一些东西,代码更干净。我有这个库,我不介意再次使用它,我必须迭代一个列表,使它们成为对象,然后执行该调用,然后再次迭代以将属性的值设置为false。。。太麻烦了,但知道这个函数很好为什么要使用第三方库来完成这么简单的任务?我的意思是,你的项目中通常会包含番石榴和apache commons中的一些东西,而且代码更干净。我确实有这个库,我不介意使用它,但再次,我必须遍历一个列表,使它们成为对象,然后执行该调用,然后再次迭代以将属性值设置为false。。。太麻烦了,但是知道这个函数很好我已经有了一个循环迭代列表1,所以如果在第一次迭代中可以完成,那么添加第二次迭代对我来说并不好。。。如果别无选择,我想我不得不这么做,但是。。。为什么list2总是说它包含所有代码,而实际上它们不包含这些代码呢?另外,为了指出列表名称被交换了,我已经更正了它们,所以这就是我正在做的事情,遍历对象列表并查看list1是否有itI,我已经有一个循环在迭代list1,因此如果在第一次迭代中可以完成,那么添加第二次迭代对我来说并不好。。。如果别无选择,我想我不得不这么做,但是。。。为什么list2总是说它包含所有的代码,而实际上它们不包含这些代码呢?另外,为了指出列表名是互换的,我已经更正了它们,所以这就是我正在做的,遍历对象列表,看看list1是否包含这些代码