过滤器列表等于参数

问题描述 投票:0回答:1

我有一个List对象,其中有一个属性为boolean的对象。isEnabled. 我想使用流来过滤基于参数的方法的列表,我有一个List of对象,其中有一个属性为boolean isEnabled的,我想使用流来过滤列表取决于方法的参数。

List<Object> myMethod(boolean enabled) {
    List<Object> myObjects = getObjectsFromDB();

    // I want to filter myObjects to return only objects
    // where enabled == object.isEnabled
}
java stream
1个回答
0
投票

根据你要使用的终端类,它应该是这样的。

List<YourClass> filtered = myObjects.stream()
                           .map(o -> (YourClass)o)
                           .filter(o -> enabled == o.isEnabled())
                           .collect(Collectors.toList());

或者

List<Object> filtered = myObjects.stream()
                           .filter(o -> enabled == ((YourClass)o).isEnabled())
                           .collect(Collectors.toList());

0
投票

只需这样做。

List<Object> myMethod(boolean enabled) {
    List<Object> myObjects = getObjectsFromDB();
    // Java 8 streams with filter
    return myObjects.stream()
                    .filter(o -> ((AnyObject) o).isEnabled() == enabled)
                    .collect(Collectors.toList());
}

0
投票

你可以对类中的对象进行投射,并检查属性。

List<Object> myMethod() {
    List<Object> myObjects = getObjectsFromDB();
    List<Object> ret = myObjects.stream()
          .filter(x -> ((MyClass)x).isEnabled()).collect(Collectors.toList());
}
© www.soinside.com 2019 - 2024. All rights reserved.