Лучший краткий метод для линеаризации списка значений карты? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть список карт, подобный этому:

List<Map<String,Object>> l = new ArrayList<>();
Map<String,Integer> m = new HashMap<>();
m.put("X", 1);
m.put("Y", 9);
l.add(m);
m = new HashMap<>();
m.put("X", 23);
m.put("Y", 6);
l.add(m);

Каков наилучший метод для линеаризации всех значений карты с помощью лямбда-примитивов для получения списка, подобного этому

List<Integer> = [1, 9, 23, 6]

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Также вы можете сделать это без потоков (но с лямбдами):

List<Integer> result = new ArrayList<>();
yourListOfMaps.forEach(map -> result.addAll(map.values());

Список карт должен быть типа List<Map<String, Integer>>.

0 голосов
/ 05 октября 2018

Попробуйте:

List<Integer> result = l
        .stream()
        .flatMap(map -> map.values().stream())
        .collect(Collectors.toList());

System.out.println(result); // [1, 9, 23, 6]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...