Comparator.comparing用处 很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理,使用java8新特性 //返回 对象集合以类属性一升序排序list.stream().so
//返回 对象集合以类属性一升序排序list.stream().sorted(Comparator.comparing(类::属性一));//返回 对象集合以类属性一降序排序 注意两种写法//先以属性一升序,结果进行属性一降序list.stream().sorted(Comparator.comparing(类::属性一).reversed());//以属性一降序list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));//返回 对象集合以类属性一升序 属性二升序list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二));//返回 对象集合以类属性一降序 属性二升序 注意两种写法//先以属性一升序,升序结果进行属性一降序,再进行属性二升序list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二));//先以属性一降序,再进行属性二升序list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二));//返回 对象集合以类属性一降序 属性二降序 注意两种写法//先以属性一升序,升序结果进行属性一降序,再进行属性二降序list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一降序,再进行属性二降序list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二,Comparator.reverseOrder()));//返回 对象集合以类属性一升序 属性二降序 注意两种写法//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二).reversed());//先以属性一升序,再进行属性二降序list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二,Comparator.reverseOrder()));
注意,注意上面的代码:
Comparator.comparing(类::属性一).reversed();Comparator.comparing(类::属性一,Comparator.reverseOrder());
简单来说就是: 1.先排序(默认升序),然后降序; 2.直接降序排序;
简单举个例子:
有个Person类:
class Person{ private int id; private int score; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Person(int id, int score, String name) { this.id = id; this.score = score; this.name = name; } @Override public String toString() { return "Person{" + "id=" + id + ", score=" + score + ", name='" + name + '\'' + '}'; } }
Main方法:
public class Test { public static void main(String[] args) { ArrayList<Person> people = new ArrayList<>(); people.add(new Person(1,2,"小明")); people.add(new Person(2,3,"校长")); people.add(new Person(2,1,"小子")); people.sort(Comparator.comparing(Person::getId).thenComparing(Person::getScore)); for (Person person : people) { System.out.println(person); } }}
结果:
来源地址:https://blog.csdn.net/qq_45979629/article/details/129204965
--结束END--
本文标题: 一篇告诉你Comparator.comparing的使用
本文链接: https://lsjlt.com/news/378342.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0