Список фильтров равен параметру - PullRequest
0 голосов
/ 27 мая 2020

У меня есть список объектов, в которых есть логический атрибут isEnabled. Я хочу использовать потоки для фильтрации списка на основе параметра метода.

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

    // I want to filter myObjects to return only objects
    // where enabled == object.isEnabled
}

Ответы [ 3 ]

0 голосов
/ 27 мая 2020

В зависимости от конечного класса, который вы собираетесь использовать, он должен быть примерно таким:

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 голосов
/ 27 мая 2020

вы можете привести объекты в класс и проверить атрибут

List<Object> myMethod() {
    List<Object> myObjects = getObjectsFromDB();
    List<Object> ret = myObjects.stream()
          .filter(x -> ((MyClass)x).isEnabled()).collect(Collectors.toList());
}
0 голосов
/ 27 мая 2020

Просто сделайте это:

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());
}
...