List<Map<String,Object>> map 用stream().sorted()降序排序
时间: 2023-10-14 08:43:11 浏览: 116
你可以使用`stream().sorted()`方法来对`List<Map<String, Object>>`进行排序。要将其降序排序,可以使用`Comparator.reverseOrder()`方法作为参数传递给`sorted()`方法。下面是一个示例代码:
```java
List<Map<String, Object>> list = new ArrayList<>();
// 添加一些示例数据到list中
list.stream()
.sorted(Comparator.comparing(map -> (Comparable) map.get("key")).reversed())
.forEach(System.out::println);
```
在上面的代码中,我们通过`Comparator.comparing()`方法指定要排序的键(这里假设为"key"),然后使用`.reversed()`方法将排序顺序设置为降序。最后,我们使用`.forEach()`方法打印排序后的结果。
请注意,这里假设要排序的键的值是可比较的(实现了`Comparable`接口)。如果不是可比较的类型,你可能需要自定义一个`Comparator`来进行排序。
相关问题
Map<Object, List<Map<String, Object>>> 按照map的key值降序排序
要按照Map的key值降序排序,可以使用Java 8的Stream API和Comparator来实现。以下是一个示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<Object, List<Map<String, Object>>> map = new HashMap<>();
// 假设已经有了需要排序的map数据
// 使用Stream API和Comparator按照key值降序排序
Map<Object, List<Map<String, Object>>> sortedMap = map.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey(Comparator.reverseOrder()))
.collect(LinkedHashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), Map::putAll);
// 输出排序后的map
for (Map.Entry<Object, List<Map<String, Object>>> entry : sortedMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
在上面的代码中,我们首先创建了一个`Map<Object, List<Map<String, Object>>>`对象,并假设已经有了需要排序的map数据。然后,我们使用Stream API的`sorted()`方法和`comparingByKey()`方法来按照key值进行排序,同时使用`Comparator.reverseOrder()`来实现降序排序。最后,我们使用`collect()`方法将排序后的结果收集到一个新的`LinkedHashMap`中。
请注意,由于`HashMap`本身是无序的,所以我们使用`LinkedHashMap`来保持排序后的顺序。
List<Map<String, Object>>根据stream流排序
要根据stream流排序List<Map<String, Object>>,可以使用`Comparator`和`Collectors`类来实现。下面是一个示例代码:
```java
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list = getList(); // 获取原始的List<Map<String, Object>>
List<Map<String, Object>> sortedList = list.stream()
.sorted(Comparator.comparing(map -> (Integer) map.get("key"))) // 根据 "key" 字段进行排序
.collect(Collectors.toList());
System.out.println(sortedList);
}
private static List<Map<String, Object>> getList() {
// 返回一个包含多个Map对象的List
return List.of(
Map.of("key", 3, "value", "C"),
Map.of("key", 1, "value", "A"),
Map.of("key", 2, "value", "B")
);
}
}
```
在上面的示例中,我们使用`sorted`方法和一个自定义的`Comparator`来根据Map中的 "key" 字段进行排序。最后,使用`collect`方法将排序后的Stream转换回List。输出结果为:
```
[{key=1, value=A}, {key=2, value=B}, {key=3, value=C}]
```
这样,你就可以根据stream流对List<Map<String, Object>>进行排序了。