从一堆地图中创建特定值列表的有效方法

use*_*723 0 java dictionary list java-8 java-stream

说我有一张地图清单

List<Map<String, Double>> maps = new ArrayList<>();

Map<String, Double> map1 = new HashMap();
map1.put("height",60D);
map1.put("weight",144D);

maps.add(map1);


Map<String, Double> map2 = new HashMap();
map2.put("height",63D);
map2.put("weight",192D);

maps.add(map2);
Run Code Online (Sandbox Code Playgroud)

等等...

创建身高或体重列表的最快方法是什么?像列表高度之类的东西。

经典的方法是浏览地图,使用if条件并搜索高度键,然后如果找到高度键,则将其添加到返回列表中。

使用流执行此操作的等效方法是什么?

Pan*_*hal 7

List<Double> listHeights = maps.stream()
                                .map(map -> map.get("height"))
                                .filter(Objects::nonNull)
                                .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

同样,您也可以这样做weight