我在 map 列表中存储了一些数据
List<Map<String, Integer>> myList;
有没有一种简单的方法可以得到所有的键,而不用一个元素一个元素地go 调用Map::keySet
?
例如,我有一个列表((Bob, 1), (James, 5))
,其中Bob和James都是映射中的关键字,我如何才能获得一个只有(Bob, James)
的列表?
我在 map 列表中存储了一些数据
List<Map<String, Integer>> myList;
有没有一种简单的方法可以得到所有的键,而不用一个元素一个元素地go 调用Map::keySet
?
例如,我有一个列表((Bob, 1), (James, 5))
,其中Bob和James都是映射中的关键字,我如何才能获得一个只有(Bob, James)
的列表?
这应该行得通.
Set<String> result =
mylist.stream().flatMap(map->map.keySet().stream())
.collect(Collectors.toSet());
这里有另一种避免平面映射的方法.但它确实会在每一张 map 上迭代.MapMulti将每个密钥放在流上,然后将它们收集到一个集合中.
result = myList.stream().<String>mapMulti((map, consumer)-> {
for (String key : map.keySet()) {
consumer.accept(key);
}}).collect(Collectors.toSet());
}