stream sorted 按照某一字段自定义规则排序,如以Name字段排序,内容为ERROR的大于内容为FATAL的,内容为FATAL的大于内容为test的
时间: 2023-04-04 14:05:11 浏览: 154
可以使用Java 8的Stream.sorted()方法和Comparator.comparing()方法来实现按照Name字段排序,并自定义规则。具体代码如下:
```
List<Log> logs = ...; // 日志列表
Comparator<Log> comparator = Comparator.comparing(Log::getName, (name1, name2) -> {
if (name1.equals("ERROR") && !name2.equals("ERROR")) {
return -1;
} else if (name1.equals("FATAL") && name2.equals("test")) {
return -1;
} else if (name1.equals("test") && !name2.equals("test")) {
return 1;
} else {
return 0;
}
});
List<Log> sortedLogs = logs.stream().sorted(comparator).collect(Collectors.toList());
```
其中,Log是一个包含Name字段的日志对象。Comparator.comparing()方法用于指定按照Name字段排序,第二个参数是一个Lambda表达式,用于自定义排序规则。如果Name字段为"ERROR",则排在前面;如果Name字段为"FATAL",且另一个日志的Name字段为"test",则排在前面;如果Name字段为"test",则排在后面。最后,使用Stream.sorted()方法对日志列表进行排序,并使用Collectors.toList()方法将排序后的日志列表转换为List类型。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)