List<Map<Object,Object>> 中的三个汉字字段以及一个double字段类型进行连续排序 汉字字段先排 使用Java11的新特性写
时间: 2024-03-13 17:22:32 浏览: 77
java代码-使用java解决list(Map)排序的问题源代码
使用Java11的新特性,我们可以使用比较器的新方法 thenComparing() 连续对多个字段进行排序。下面是一个示例代码:
```
import java.util.*;
public class SortExample {
public static void main(String[] args) {
List<Map<Object,Object>> list = new ArrayList<>();
// 添加测试数据
Map<Object,Object> map1 = new HashMap<>();
map1.put("name", "张三");
map1.put("age", 20);
map1.put("height", 1.75);
list.add(map1);
Map<Object,Object> map2 = new HashMap<>();
map2.put("name", "李四");
map2.put("age", 25);
map2.put("height", 1.8);
list.add(map2);
Map<Object,Object> map3 = new HashMap<>();
map3.put("name", "王五");
map3.put("age", 18);
map3.put("height", 1.7);
list.add(map3);
// 连续排序
Comparator<Map<Object,Object>> cmp = Comparator.comparing((Map<Object,Object> m) -> (String) m.get("name"))
.thenComparingDouble(m -> (Double) m.get("height"));
Collections.sort(list, cmp);
// 输出结果
for (Map<Object,Object> map : list) {
System.out.println(map.get("name") + " " + map.get("age") + " " + map.get("height"));
}
}
}
```
在上面的示例中,我们首先定义了一个 List<Map<Object,Object>> 类型的集合,其中每个 Map 对象包含一个字符串类型的 name 字段、一个整数类型的 age 字段和一个浮点数类型的 height 字段。
接下来,我们使用 Comparator.comparing() 方法对 name 字段进行排序,然后使用 thenComparingDouble() 方法对 height 字段进行排序。这样,我们就实现了对 List<Map<Object,Object>> 类型集合中的多个字段进行连续排序。
最后,我们使用 Collections.sort() 方法将列表按照上述比较器进行排序,并输出排序结果。
阅读全文