java8 lamada表达式过滤提取出List<Map<String, Object>> 中type为ipc的list并按照rank倒叙排序
时间: 2023-11-11 21:29:20 浏览: 150
可以使用Java8的Stream API和Lambda表达式来实现该功能,示例代码如下:
```
List<Map<String, Object>> list = new ArrayList<>();
// 假设list已经被初始化并填充了数据
List<Map<String, Object>> ipcList = list.stream()
.filter(map -> "ipc".equals(map.get("type")))
.sorted((map1, map2) -> (int) map2.get("rank") - (int) map1.get("rank"))
.collect(Collectors.toList());
```
解释一下代码的逻辑:
1. 使用`stream()`方法将`List`对象转换成流对象。
2. 使用`filter()`方法过滤出`type`属性为`ipc`的`Map`对象。
3. 使用`sorted()`方法按照`rank`属性倒序排序`Map`对象。
4. 使用`collect()`方法将排序后的结果收集起来,并转换为`List`对象。
最终,`ipcList`中就只包含了`type`为`ipc`的`Map`对象,并且按照`rank`属性倒序排列了。
相关问题
java8 lamada表达式过滤提取出List<Map<String, Object>> 中type为hotfield的list
可以使用Java8的Stream API和Lambda表达式来实现该功能,示例代码如下:
```
List<Map<String, Object>> list = new ArrayList<>();
// 假设list已经被初始化并填充了数据
List<Map<String, Object>> hotFieldList = list.stream()
.filter(map -> "hotfield".equals(map.get("type")))
.collect(Collectors.toList());
```
解释一下代码的逻辑:
1. 使用`stream()`方法将`List`对象转换成流对象。
2. 使用`filter()`方法过滤出`type`属性为`hotfield`的`Map`对象。
3. 使用`collect()`方法将过滤后的结果收集起来,并转换为`List`对象。
最终,`hotFieldList`中就只包含了`type`为`hotfield`的`Map`对象了。
lamada表达式根据条件过滤list
使用Lambda表达式根据条件过滤List,可以使用Java 8中引入的Stream API。Stream API提供了filter()方法,可以根据给定的条件过滤Stream中的元素。
示例代码如下,假设有一个List<Student>,其中Student类有两个属性:name和score,现在要根据score过滤出分数大于等于80分的学生:
```java
List<Student> studentList = ... //获取Student列表
List<Student> filteredList = studentList.stream()
.filter(student -> student.getScore() >= 80)
.collect(Collectors.toList());
```
上述代码中,首先通过stream()方法将List转换为Stream,然后调用filter()方法,过滤出符合条件的元素。在filter()方法中,使用Lambda表达式实现过滤条件,即score大于等于80分。最后通过collect()方法将过滤后的结果转换为List并返回。
需要注意的是,使用Stream API进行过滤操作时,不会改变原始的List,而是返回一个新的List。如果需要在原始List上进行修改,可以使用forEach()方法遍历List,然后进行修改操作。
阅读全文