Java 仅显示列表中的地图键<;地图<;字符串,列表<;字符串>&燃气轮机&燃气轮机;

Java 仅显示列表中的地图键<;地图<;字符串,列表<;字符串>&燃气轮机&燃气轮机;,java,arrays,list,hashmap,key-value,Java,Arrays,List,Hashmap,Key Value,我的结构如下: List<Map<String, List<String>>> filters 我只想显示map键,而不是值 预期产出: product 我尝试了以下方法: String op = filters.get(i).keySet().toString(); 这为我提供了以下输出: [product] 我也尝试过使用.stream(),但没有成功。我只想显示按键(一个或多个),即在本例中:product 任何帮助都将不胜感激。这应该可以解决问

我的结构如下:

List<Map<String, List<String>>> filters
我只想显示map键,而不是值

预期产出:

product
我尝试了以下方法:

String op = filters.get(i).keySet().toString();
这为我提供了以下输出:

[product]
我也尝试过使用.stream(),但没有成功。我只想显示按键(一个或多个),即在本例中:product


任何帮助都将不胜感激。

这应该可以解决问题

List<String> collect = filters.stream()
                              .flatMap(entry -> 
                                           entry.keySet().stream())
                                          .collect(Collectors.toList());
List collect=filters.stream()
.flatMap(条目->
entry.keySet().stream())
.collect(Collectors.toList());
collect将拥有地图的所有键。

您可以使用:

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

编辑:


我想将接收到的输出示例:(product)传递给另一个示例 功能。每个部分都会这样做吗?我不想 在那里打印

否在这种情况下,您可以在列表中收集结果,然后返回结果,例如:

public List<String> myFunction(List<Map<String, List<String>>> filters){
    return filters.stream()
            .flatMap(c -> c.keySet().stream())
            .collect(Collectors.toList());
}
公共列表myFunction(列表过滤器){
返回filters.stream()
.flatMap(c->c.keySet().stream())
.collect(Collectors.toList());
}
然后你可以这样消费它:

List<String> result = myFunction(filters);
result.forEach(System.out::println);
List result=myFunction(过滤器);
result.forEach(System.out::println);

我想将接收到的输出示例:(product)传递给另一个函数。每个部分都会这样做吗?我不想在那里打印。谢谢你的帮助。@TeeJay no收集所有结果并返回我编辑我的答案检查ITI如果输入是
[{a:[1],b:[2]},{a:[3],c:[4]}]
应该输出什么<代码>[[a,b],[a,c]或
[a,b,a,c]
[a,b,c]
List<String> result = myFunction(filters);
result.forEach(System.out::println);