通过stream api获取list<hashmap>中指定的key
时间: 2024-10-23 17:12:02 浏览: 28
在Java中,你可以使用Stream API来过滤并获取`List<HashMap>`中特定key的所有值。以下是一个示例:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 假设你有一个List<HashMap<String, String>>
List<HashMap<String, String>> list = new ArrayList<>();
list.add(new HashMap<>(){{
put("key1", "value1");
put("key2", "value2");
}});
list.add(new HashMap<>(){{
put("key2", "value3");
put("key3", "value4");
}});
// 使用Stream API获取所有包含"key2"的Map
List<String> valuesByKey2 = list.stream()
.filter(map -> map.containsKey("key2"))
.flatMap(map -> map.entrySet().stream()) // 获取每个Map的entrySet
.filter(entry -> entry.getKey().equals("key2")) // 过滤出键为"key2"的项
.map(Map.Entry::getValue) // 提取值
.collect(Collectors.toList());
System.out.println(valuesByKey2); // 输出:[value2, value3]
}
}
```
在这个例子中,我们首先创建了一个`List<HashMap<String, String>>`,然后通过`stream()`、`filter()`, `flatMap()`, 和 `collect()` 方法结合使用,最终得到了所有包含指定key("key2")的值。
阅读全文