检查一个列表是否包含另一个列表中的元素

我有两个带有不同对象的列表。

List<Object1> list1;

List<Object2> list2;

我想检查list2中的元素是否存在于list2中,基于特定的属性(Object1和Object2具有(以及其他),一个共有属性(类型为Long),名为attributeSame)。

现在,我这样做是这样的:

boolean found = false;

for(Object1 object1 : list1){

for(Object2 object2: list2){

if(object1.getAttributeSame() == object2.getAttributeSame()){

found = true;

//also do something

}

}

if(!found){

//do something

}

found = false;

}

但是我认为有一种更好,更快的方法可以做到这一点:)有人可以提出吗?

谢谢!

回答:

如果只需要测试基本相等性,则可以使用基本JDK来完成,而无需在一行中修改输入列表

!Collections.disjoint(list1, list2);

如果您需要测试特定的属性,则难度更大。我建议默认情况下,

list1.stream()

.map(Object1::getProperty)

.anyMatch(

list2.stream()

.map(Object2::getProperty)

.collect(toSet())

::contains)

…收集不同的值list2并测试每个值list1是否存在。

以上是 检查一个列表是否包含另一个列表中的元素 的全部内容, 来源链接: utcz.com/qa/397909.html

回到顶部