stream sorted 按照某一字段自定义规则排序,如以Name字段排序,内容为FATAL的大于内容为ERROR的,内容为ERROR的大于内容为WARN的
时间: 2023-04-05 13:02:28 浏览: 97
python中自定义排序函数共3页.pdf.zip
可以使用Java 8的Stream.sorted方法,结合Comparator.comparing和Comparator.thenComparing方法来实现自定义规则排序。具体实现如下:
```
List<Log> logs = ...; // 假设logs是一个Log对象的列表
logs.stream()
.sorted(Comparator.comparing(Log::getName)
.thenComparing((log1, log2) -> {
if (log1.getMessage().equals("FATAL")) {
return -1;
} else if (log2.getMessage().equals("FATAL")) {
return 1;
} else if (log1.getMessage().equals("ERROR")) {
return -1;
} else if (log2.getMessage().equals("ERROR")) {
return 1;
} else {
return log1.getMessage().compareTo(log2.getMessage());
}
}))
.forEach(System.out::println);
```
这段代码会按照Log对象的Name字段进行排序,如果Name相同,则按照自定义规则进行排序。具体规则是:内容为FATAL的Log排在前面,内容为ERROR的Log排在其次,内容为WARN的Log排在最后。
阅读全文