java list<map> lambda 查询
时间: 2023-12-09 08:02:20 浏览: 35
假设我们有一个List<Map<String, Object>>,其中每个Map包含以下键值对:
- "name":String类型,表示人名
- "age":Integer类型,表示年龄
- "gender":String类型,表示性别
我们可以使用Lambda表达式来查询这个List中的Map对象。假设我们要查询年龄大于等于18岁且性别为女性的人名,可以使用以下代码:
```java
List<Map<String, Object>> list = new ArrayList<>();
// 添加Map对象到list中
List<String> names = list.stream()
.filter(map -> (Integer) map.get("age") >= 18 && map.get("gender").equals("female"))
.map(map -> (String) map.get("name"))
.collect(Collectors.toList());
```
在以上代码中,我们使用了Stream流和Lambda表达式来对List中的Map对象进行查询。首先,我们使用filter()方法过滤出年龄大于等于18岁且性别为女性的Map对象。然后,我们使用map()方法将符合条件的Map对象中的人名提取出来。最后,我们使用collect()方法将人名放入一个新的List中。
相关问题
java List<Map>转Map
可以使用Java 8的lambda表达式和Stream API来将List<Map>转换为Map。具体的代码如下:
```
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "张三");
map1.put("age", 20);
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "李四");
map2.put("age", 22);
list.add(map2);
Map<String, Object> result = list.stream().flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(result);
```
这段代码首先定义了一个List<Map<String, Object>>,并添加了两个Map到List中。然后使用Stream API对List进行转换,flatMap函数将Map转换为其键值对的Stream,最后使用Collectors.toMap函数将所有的键值对收集到一个新的Map中,最终输出结果。
Java List<T>转List<Map>通用方法
很好,这是一个技术问题。Java List<T> 转 List<Map> 的通用方法可以通过遍历 List<T> 中的每个元素,将其转换成一个 Map 对象,再将 Map 对象加入到一个新的 List<Map> 中。具体的实现可以使用 Java 8 中的 Lambda 表达式和 Stream API。您可以参考以下代码:
List<T> list = ... // 原始 List<T> 对象
List<Map> maps = list.stream().map(e -> {
Map<String, Object> map = new HashMap<>();
// 将 T 对象中的属性转换成 Map 中的键值对
map.put("key1", e.getField1());
map.put("key2", e.getField2());
return map;
}).collect(Collectors.toList()); // 将所有的 Map 对象转换成 List<Map> 对象
希望这个回答能够对您有所帮助~