java比较列表元素的属性,比如list.contains(..)但是按属性

时间:2018-03-16 11:49:15

标签: java arraylist java-stream

我有两个列表

class FirstElement {
       private int id;
       private String name;
}

class SecondElement {
       private int id;
       private String someString;
}

List<FirstElement> listF = getListOfSomeElements1();
List<SecondElement> listS = getListOfSomeElements2();

如果属性name = someString

,我需要在listF<FirstElement>中找到元素

如果我需要通过相应的元素找到,我会使用例如:

if(listF.contains(listS.get(1))){...}

我使用自己的方法

boolean compareProperties(List<FirstElement> firstList, SecondElement secondElement){
 for(FirstElement firstElement:firstList){
        if (firstElement.getName().equals(secondElement.getSomestring)){
            return true;
        }
    }
    return false;
} 

如何使用Stream删除我的方法?

2 个答案:

答案 0 :(得分:1)

如果您想将当前方法转换为流版本,则可以使用anyMatch

boolean exists = 
           listF.stream()
                .anyMatch(e -> e.getName().equals(secondElement.getSomestring));

如果要查找满足所提供条件的第一个元素,则可以执行以下操作:

Optional<FirstElement> firstElement = 
         listF.stream()
              .filter(e -> e.getName().equals(secondElement.getSomestring))
              .findFirst();

有多种方法可以展开Optional<T>plot = sympy.plot(..., show=False)可以找到。

答案 1 :(得分:0)

您可以按需要的字段过滤流