Java11 List<Map<Object,Object>>中的多个汉字字段以及小数点数据字段类型进行连续排序 先按汉字字段
时间: 2023-11-11 08:06:54 浏览: 77
您可以使用Java 11中的Stream API来对List<Map<Object, Object>>进行排序。以下是一个示例代码:
```
List<Map<Object, Object>> list = ... // your list of maps
list.sort(Comparator.comparing(map -> (String) map.get("chineseField"))
.thenComparingDouble(map -> (Double) map.get("decimalField")));
```
此代码首先按照“chineseField”字段进行排序,然后按照“decimalField”字段进行排序。请注意,我们使用了Java 11中的新方法Comparator.comparing()和Comparator.thenComparingDouble()来指定排序顺序。
请替换“chineseField”和“decimalField”为您实际使用的字段名称,并确保它们在Map中的值确实为String和Double类型。如果字段类型不匹配,将抛出ClassCastException异常。
相关问题
Java11 List<Map<Object,Object>>中的多个汉字字段以及小数点数据字段类型进行连续排序
您可以使用Java 11中提供的Comparator接口以及lambda表达式来对List<Map<Object,Object>>中的多个汉字字段以及小数点数据字段进行连续排序。以下是一个示例代码:
```java
List<Map<Object, Object>> list = new ArrayList<>();
// 添加数据
Map<Object, Object> map1 = new HashMap<>();
map1.put("name", "张三");
map1.put("age", 20);
map1.put("score", 89.5);
list.add(map1);
Map<Object, Object> map2 = new HashMap<>();
map2.put("name", "李四");
map2.put("age", 22);
map2.put("score", 80.0);
list.add(map2);
Map<Object, Object> map3 = new HashMap<>();
map3.put("name", "王五");
map3.put("age", 20);
map3.put("score", 95.5);
list.add(map3);
// 连续排序,先按年龄升序,再按分数降序,最后按名字升序
Comparator<Map<Object, Object>> comparator = Comparator.comparingInt(o -> (int) o.get("age"))
.thenComparing(Comparator.comparingDouble(o -> (double) o.get("score")).reversed())
.thenComparing(o -> (String) o.get("name"));
Collections.sort(list, comparator);
// 输出排序结果
for (Map<Object, Object> map : list) {
System.out.println(map.get("name") + " " + map.get("age") + " " + map.get("score"));
}
```
上述代码中,我们首先创建了一个List<Map<Object,Object>>类型的对象,然后向其中添加了三个Map对象,每个Map对象包含了一个汉字字段("name")、一个整数字段("age")以及一个小数点字段("score")。接下来,我们使用Comparator接口以及lambda表达式来对List中的Map对象进行连续排序,首先按照年龄升序排列,如果年龄相同,则按照分数降序排列,最后按照名字升序排列。最后,我们调用Collections.sort()方法来对List中的Map对象进行排序,并输出排序结果。
阅读全文