Список фильтрации потоков Java> - PullRequest
0 голосов
/ 22 мая 2018

Я хотел бы отфильтровать «Список карт» и создать новый объект, используя Streams.

Для первого шага я могу выбрать запись из списка, которая соответствует определенному ключу:

List<Map<String,String>> listOfItems =...
listOfItems.stream().filter(m -> m.get("name").equals("apple"));

Теперь я хотел бы создать объект с использованием выбранной карты.запись.

Спасибо, Судха

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Итак, если я правильно понимаю ваш вопрос, вам нужно что-то вроде этого:

List<Map<String,String>> listOfItems =...
List<MyObject> objects = listOfItems
    .stream()
    .filter(m -> m.get("name").equals("apple")) 
    .map(MyObject::new) // Construct object from matching map
    .collect(Collectors.toList()); // Collect into list

Это создаст список из MyObject экземпляров, по одному для каждой соответствующей карты в вашем исходном списке.Если вы ожидаете, что будет только одна такая Карта, или вы когда-либо захотите создать объект из первой соответствующей Карты, вы можете заменить последнюю строку на .findFirst() (см. здесь ).

0 голосов
/ 22 мая 2018

Это то, что вам нужно?

List<Map<String,String>> listOfItems =...
listOfItems.stream()
           .filter(m -> m.containsValue("apple"))
           .map(m -> new NewObject(m))
           .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...