java stream 把List<Map<String, Object>>中的某个符合条件的数据排在第一位
时间: 2023-10-29 17:05:28 浏览: 166
可以使用Java Stream的sorted()方法和Comparator来实现。Comparator可以根据指定的条件来比较两个元素的大小,从而实现排序。
假设我们要把List<Map<String, Object>>中age等于20的数据排在第一位,可以按照以下步骤进行操作:
1. 使用Java Stream的filter()方法过滤出符合条件的数据。
2. 使用Comparator.comparing()方法指定比较规则,根据age的值进行比较。
3. 使用sorted()方法对符合条件的数据进行排序。
4. 使用Stream.concat()方法将排序后的数据和原始数据合并。
具体代码如下:
```java
List<Map<String, Object>> dataList = new ArrayList<>();
// 假设dataList中有多个Map对象,每个Map对象中都有一个age属性
List<Map<String, Object>> sortedDataList = Stream.concat(
dataList.stream()
.filter(map -> map.get("age").equals(20))
.sorted(Comparator.comparing(map -> (int)map.get("age"))),
dataList.stream()
.filter(map -> !map.get("age").equals(20))
)
.collect(Collectors.toList());
```
上述代码中,首先使用filter()方法过滤出age等于20的数据,并使用sorted()方法对这些数据进行排序。随后使用filter()方法过滤出age不等于20的数据。最后使用Stream.concat()方法将排序后的数据和未排序的数据合并成一个新的List。最终得到的sortedDataList中,age等于20的数据排在第一位。
阅读全文