List<Map<String, Object>> collect = hb.stream().sorted(Comparator.comparing(m -> m.get("own").toString(), Comparator.reverseOrder())).sorted(Comparator.comparing(m -> m.get("score").toString(), Comparator.reverseOrder())).collect(Collectors.toList()); 为什么这个排序score最高的排在的下面,颠倒过来排序也没用
时间: 2023-05-16 22:06:19 浏览: 59
这个排序是先按照 "own" 字段进行降序排序,然后再按照 "score" 字段进行降序排序,因此得到的结果是 "own" 字段相同的记录按照 "score" 字段降序排列。如果想要得到 "score" 字段最高的记录排在最前面,应该将两个排序的顺序颠倒,先按照 "score" 字段进行降序排序,然后再按照 "own" 字段进行降序排序。
相关问题
List<Map<String, Object>> list = new ArrayList<>(); // 假设list中已经有了一些Map对象 HashMap<String, Object> stringObjectHashMap = new HashMap<>(); HashMap<String, Object> stringObjectHashMap1 = new HashMap<>(); HashMap<String, Object> stringObjectHashMap2 = new HashMap<>(); stringObjectHashMap.put("year","一"); stringObjectHashMap1.put("year","二"); stringObjectHashMap2.put("year","三"); list.add(stringObjectHashMap); list.add(stringObjectHashMap1); list.add(stringObjectHashMap2); List<Map<String, Object>> sortedList = list.stream() .sorted(Comparator.comparing(map -> (String) map.get("year"))) .collect(Collectors.toList()); System.out.println(sortedList);如何对中文大写字母进行排序
对中文大写字母进行排序的方法与对英文大写字母排序的方法类似。可以使用Comparator.comparing方法来指定排序的键值,并使用Stream的sorted方法进行排序。以下是一个示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<>();
// 假设list中已经有了一些Map对象
HashMap<String, Object> stringObjectHashMap = new HashMap<>();
HashMap<String, Object> stringObjectHashMap1 = new HashMap<>();
HashMap<String, Object> stringObjectHashMap2 = new HashMap<>();
stringObjectHashMap.put("year", "一");
stringObjectHashMap1.put("year", "二");
stringObjectHashMap2.put("year", "三");
list.add(stringObjectHashMap);
list.add(stringObjectHashMap1);
list.add(stringObjectHashMap2);
List<Map<String, Object>> sortedList = list.stream()
.sorted(Comparator.comparing(map -> {
String year = (String) map.get("year");
// 如果是中文大写字母,将其转换为对应的Unicode码,并进行排序
if (year.matches("[\\u4e00-\\u9fa5]")) {
return (int) year.toCharArray()[0];
}
// 如果是其他字符,则返回一个足够大的值,确保它在排序结果的末尾
return Integer.MAX_VALUE;
}))
.collect(Collectors.toList());
System.out.println(sortedList);
}
}
```
这段代码将会输出 `[{year=一}, {year=三}, {year=二}]`,表示按照中文大写字母的顺序对列表进行了排序。
使用stream流对List<Map<String,Object>>进行排序
可以使用Java 8中的流(Stream)来对List<Map<String,Object>>进行排序。下面是一个示例代码:
```
List<Map<String, Object>> list = new ArrayList<>();
// 假设list中已经有了需要排序的数据
List<Map<String, Object>> sortedList = list.stream()
.sorted(Comparator.comparing((Map<String, Object> m) -> m.get("key1"))
.thenComparing(m -> m.get("key2")))
.collect(Collectors.toList());
```
其中,`Comparator.comparing`方法可以用于指定排序的键值,`thenComparing`方法用于指定当第一个键值相同时的次要排序规则。
如果需要进行反向排序,可以在`comparing`和`thenComparing`方法中使用`Comparator.reverseOrder()`方法来创建反向排序的比较器,例如:
```
List<Map<String, Object>> sortedList = list.stream()
.sorted(Comparator.comparing((Map<String, Object> m) -> m.get("key1"), Comparator.reverseOrder())
.thenComparing(Comparator.comparing(m -> m.get("key2"), Comparator.reverseOrder())))
.collect(Collectors.toList());
```
这样就可以按照指定的键值进行排序了。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)