stream sorted 按照某一字段自定义规则排序,如以Name字段排序,内容为off的大于内容为no的
时间: 2023-04-04 08:05:10 浏览: 236
可以使用 Java 8 的 Stream API 中的 sorted 方法,结合 Comparator 接口实现自定义排序规则。具体实现可以参考以下代码:
List<Data> dataList = new ArrayList<>();
// 添加数据到 dataList 中
Comparator<Data> comparator = Comparator.comparing(Data::getName, (name1, name2) -> {
if ("off".equals(name1) && !"off".equals(name2)) {
return -1;
} else if (!"off".equals(name1) && "off".equals(name2)) {
return 1;
} else {
return name1.compareTo(name2);
}
});
List<Data> sortedList = dataList.stream().sorted(comparator).collect(Collectors.toList());
其中,Data 是数据对象,getName() 方法返回 Name 字段的值。Comparator.comparing() 方法用于指定按照哪个字段排序,第二个参数是一个 Lambda 表达式,用于实现自定义排序规则。在这个 Lambda 表达式中,如果 name1 的值为 "off",而 name2 的值不是 "off",则返回 -1,表示 name1 应该排在 name2 前面;如果 name1 的值不是 "off",而 name2 的值是 "off",则返回 1,表示 name1 应该排在 name2 后面;否则,按照默认的字符串比较规则进行排序。最后,使用 collect(Collectors.toList()) 方法将排序后的数据转换成 List。
阅读全文