Значение потока чтения Java 8 из карты в списке - PullRequest
0 голосов
/ 14 мая 2018

Я не хочу использовать foreach и loop. Я хочу использовать поток в Java 8, чтобы найти значение в карте внутри списка

List<Map<String, Boolean>> types = ...

map.stream().filter(...

проблема в том, что в фильтре я не могу искать по паре ключ / значение.

Я хочу получить все элементы с логическим значением = true

Я что-то не так делаю?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018
    List<Map<String, Boolean>> types = new ArrayList<>();

    Map<String, Boolean> myMap = new HashMap<>();
    Map<String, Boolean> myMap2 = new HashMap<>();

    myMap2.put("Meric", true);
    myMap2.put("BERBER", false);
    types.add(myMap2);

    myMap.put("TEST1", true);
    myMap.put("TEST2", false);
    types.add(myMap);


    types.stream()
            .flatMap(map -> map.entrySet().stream())
            .filter(Map.Entry::getValue)
            .map(Map.Entry::getKey)
            .forEach(System.out::println);

и вывод будет

 Meric
 TEST1
0 голосов
/ 14 мая 2018

Поток над набором записей:

types.stream()                               // stream of maps
    .flatMap(map -> map.entrySet().stream()) // flat map to stream of map entries
    .filter(Map.Entry::getValue)             // filter for value == true
    .map(Map.Entry::getKey)                  // get the key
    .collect(Collectors.toList());           // collect

Вы можете удалить .map(Map.Entry::getKey), если хотите получить список пар ключ / значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...