Показать только ключ карты из Списка <Карта <Строка, Список <String>>> - PullRequest
0 голосов
/ 28 июня 2018

У меня есть следующая структура:

List<Map<String, List<String>>> filters

Рассмотрим следующий пример:

filters=[{product=[A1, A2, A3]}]

Я хочу отобразить только ключ карты, а не значения.

Ожидаемый результат:

product

Я попробовал следующее:

String op = filters.get(i).keySet().toString();

Это дает мне следующий вывод:

[product]

Я тоже пытался использовать .stream (), но это не сработало. Я просто хочу отобразить ключи (одну или несколько), т.е. в этом случае: product

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вы можете использовать:

filters.stream().flatMap(c -> c.keySet().stream())
         .forEach(System.out::println);

Edit:

Я хочу передать полученный результат: (product) другому функция. Будет ли это сделано в части .forEach? Я не хочу распечатай там

Нет, в этом случае вы можете собрать результат в список, а затем вернуть его, например:

public List<String> myFunction(List<Map<String, List<String>>> filters){
    return filters.stream()
            .flatMap(c -> c.keySet().stream())
            .collect(Collectors.toList());
}

Тогда вы можете потреблять это так:

List<String> result = myFunction(filters);
result.forEach(System.out::println);
0 голосов
/ 28 июня 2018

Это должно сработать

List<String> collect = filters.stream()
                              .flatMap(entry -> 
                                           entry.keySet().stream())
                                          .collect(Collectors.toList());

собирать будет иметь все ключи карты.

...