我有一个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
}
根据你要使用的终端类,它应该是这样的。
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());
只需这样做。
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());
}
你可以对类中的对象进行投射,并检查属性。
List<Object> myMethod() {
List<Object> myObjects = getObjectsFromDB();
List<Object> ret = myObjects.stream()
.filter(x -> ((MyClass)x).isEnabled()).collect(Collectors.toList());
}