仅显示List <map <string,list <string =“” >>>

时间:2018-06-28 18:21:58

标签: java arrays list hashmap key-value

我具有以下结构:

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

考虑以下示例:

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

我只想显示地图关键字而不是值。

预期输出:

product

我尝试了以下操作:

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

这给了我以下输出:

[product]

我也尝试使用.stream(),但是没有用。我只想显示一个(或多个)键,即在这种情况下:product

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

您可以使用:

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

编辑:

  

我想将输出的示例:(产品)传递给另一个   功能。可以在.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);

答案 1 :(得分:2)

这应该可以解决问题

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

collect将具有地图的所有键。