我具有以下结构:
List<Map<String, List<String>>> filters
考虑以下示例:
filters=[{product=[A1, A2, A3]}]
我只想显示地图关键字而不是值。
预期输出:
product
我尝试了以下操作:
String op = filters.get(i).keySet().toString();
这给了我以下输出:
[product]
我也尝试使用.stream(),但是没有用。我只想显示一个(或多个)键,即在这种情况下:product
任何帮助将不胜感激。
答案 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将具有地图的所有键。