取List<Map>中具体key的所有值 使用stream
时间: 2024-03-12 10:48:08 浏览: 103
使用Java 8中的Stream API,可以更简洁地实现遍历List中每一个Map,获取指定key的值,并将其存储到新的List中的操作。示例代码如下:
```java
public List<Object> getListOfValuesByKey(List<Map<String, Object>> list, String key) {
return list.stream()
.map(map -> map.get(key))
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
```
其中,`list`为包含多个`Map`的列表,`key`为要获取值的`Map`中的键名,返回的`List`为所有值的列表。使用`stream()`将`List`转换成流,然后使用`map()`对每一个`Map`获取指定key的值,使用`filter()`过滤掉值为`null`的元素,最后使用`collect()`将流转换成列表并返回。
相关问题
list<map> 使用stream查询指定的值
可以使用 Java 8 的 Stream API 配合 lambda 表达式来查询 list 中的 map 对象的指定值。示例代码如下:
假设 list 是一个 List<Map<String, Object>> 类型的对象,其中每个 Map 对象都包含 key1 和 key2 两个键。现在我们要查询 list 中所有 key1 值为 "value1" 的 map 对象的 key2 值。
```java
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("key1", "value1");
map1.put("key2", "result1");
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("key1", "value2");
map2.put("key2", "result2");
list.add(map2);
List<Object> result = list.stream()
.filter(map -> map.get("key1").equals("value1"))
.map(map -> map.get("key2"))
.collect(Collectors.toList());
System.out.println(result); // 输出 [result1]
```
这里我们使用了 filter 方法过滤出 key1 值为 "value1" 的 map 对象,然后使用 map 方法将这些 map 对象中的 key2 值提取出来,最后使用 collect 方法将所有结果收集到一个列表中。
stream将list<map>其中一個元素流转为List<String>
可以使用Java 8的Stream API来将List<Map>中的某个元素转化为List<String>。假设我们要将List<Map>中的key为"keyName"的元素转化为List<String>,可以使用以下代码:
```
List<Map<String, Object>> list = ... // 初始化List<Map>对象
List<String> keyList = list.stream()
.map(map -> map.get("keyName").toString())
.collect(Collectors.toList());
```
这段代码会对List中的每个Map对象执行map操作,将其中key为"keyName"的元素转化为String类型,并收集到List<String>中。