我有一个如下所示的列表:
List<Map<String, String>> listOfMaps;
从这个列表中,我想根据给定的条件只提取几张地图。通常,我会这样写:
for(Map m : listOfMaps) {
if(m.get("someValue").equals("someOtherValue")) {
resultMap.put(m.get("a"), m.get("b"))
}
}
我想用java8 stream编写这个。
答案 0 :(得分:1)
您可以非常直接地将循环重写为流操作。
listOfMaps.stream()
.filter(m -> m.get("someValue").equals("someOtherValue"))
.forEach(m -> resultMap.put(m.get("a"), m.get("b")));
不确定它能给你带来什么。
答案 1 :(得分:1)
我认为您可以将所有结果收集到新地图中:
Map<String, String> resultMap = listOfMaps.stream()
.filter(m -> "someOtherValue".equals(m.get("someValue")))
.collect(Collectors.toMap(
m -> m.get("a"),
m -> m.get("b")));