Java11 List<Map<Object,Object>>中的多个汉字字段以及小数点数据字段类型进行连续排序 先按汉字字段
时间: 2023-11-11 22:06:54 浏览: 75
您可以使用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异常。
相关问题
List<Map<Object,Object>>中的多个汉字字段以及小数点数据字段类型进行排序
可以使用Java的Comparator接口来实现List<Map<Object,Object>>中的多个字段排序。以下是一个示例代码,假设List<Map<Object,Object>>中包含两个字段:一个是String类型的汉字字段,一个是Double类型的小数点数据字段。
```
List<Map<Object,Object>> list = new ArrayList<Map<Object,Object>>();
// 添加数据到list中
Collections.sort(list, new Comparator<Map<Object,Object>>() {
public int compare(Map<Object,Object> map1, Map<Object,Object> map2) {
String str1 = (String) map1.get("汉字字段");
String str2 = (String) map2.get("汉字字段");
Double num1 = (Double) map1.get("小数点数据字段");
Double num2 = (Double) map2.get("小数点数据字段");
// 比较汉字字段
int result = str1.compareTo(str2);
if (result == 0) {
// 如果汉字字段相同,则比较小数点数据字段
result = Double.compare(num1, num2);
}
return result;
}
});
```
这个示例代码会先按照汉字字段进行升序排序,如果汉字字段相同,则按照小数点数据字段进行升序排序。可以根据自己的需求修改排序方式。
阅读全文