Java中的sort和TreeSet排序

1.数据准备

ArrayList<Person> list = new ArrayList<>();
Person person1 = new Person(1, "张三", 18);//int id,string name,int age
Person person2 = new Person(2, "李四", 4);
Person person3 = new Person(3, "王五", 15);
Person person4 = new Person(4, "赵六", 12);
Person person5 = new Person(5, "张三", 13);
Person person6 = new Person(6, "老八", 20);
Person person7 = new Person(7, "老八", 20);
Person person8 = new Person(6, "老十", 21);
list.add(person1);list.add(person2);list.add(person3);
list.add(person4);list.add(person5);list.add(person6);
list.add(person7);list.add(person8);
复制代码

2.根据对象的属性排序

2.1 sort方法根据单个属性排序

list.sort((o1, o2)-> o1.getAge()-o2.getAge());
for (Person person : list) {
  System.out.println("person = " + person);
}
//结果如下:
复制代码

image-20210421105644066.png

2.2 sort方法根据两个属性排序

//.reversed()为倒序,默认为正序。
list.sort(Comparator.comparing(Person::getAge).reversed().thenComparing(Comparator.comparing(Person::getId)).reversed());
for (Person person : list) {
  System.out.println("person = " + person);
}
//结果如下:
复制代码

image-20210421105822965.png

2.3 TreeSet根据单个属性排序加去重

TreeSet<Person> set = new TreeSet<>
(Comparator.comparing(Person::getAge).reversed());
set.addAll(list);
for (Person person : set) {
  System.out.println("person = " + person);
}
//结果如下
复制代码

image-20210421110921403.png

2.4 TreeSet根据两个属性排序加去重

TreeSet<Person> set = new TreeSet<>
(Comparator.comparing(Person::getAge).reversed().thenComparing(Comparator.comparing(Person::getId)).reversed());
set.addAll(list);
for (Person person : set) {
  System.out.println("person = " + person);
}
复制代码

image-20210421111034685.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享