我在地图列表中存储了一些数据
List<Map<String, Integer>> myList;
有没有一种简单的方法可以获取所有键,而无需逐个元素并调用
keyset()
?
举例来说,我有一个列表
((Bob, 1), (James, 5))
,其中 Bob 和 James 都是地图中的键,我怎样才能获得仅包含 (Bob, James)
的列表?
尝试一下这个,尽管它仍然访问列表中的所有元素:
final Set<String> = myList.stream()
.map( Map::keyset )
.reduce( new HashSet<String>(), Set::addAll );
您可以将
stream
与 flatMap
一起使用。
示例:
public List<String> getAllInList(){
List<Map<String,Integer>> list = List.of(Map.of("Bob",1), Map.of("James",2));
return list.stream().map(Map::entrySet).flatMap(Collection::stream).collect(Collectors.toList());
}