Collections集合工具类中的sort方法
Collections集合工具类中的sort(List)
Collections是集合工具类,用来对集合进行操作。
public static <T> void sort(List<T> list);将集合中元素按照默认规则排序。
public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(5); list.add(2); list.add(8); list.add(3); System.out.println(list); // public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。 Collections.sort(list); System.out.println("默认升序:"+list); }

注意:
sort(List<T> list)使用前提是被排序的集合里边存储的元素,必须实现Comparable接口,重写接口中的compareTo方法定义排序规则
public class Person implements Comparable<Person>{ private String name; private int age; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } @Override public int hashCode() { return Objects.hash(name, age); } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(Person o) { return this.getAge()-o.getAge(); } }
public static void main(String[] args) { ArrayList<Person> list1 = new ArrayList<>(); list1.add(new Person("张三",16)); list1.add(new Person("李四",53)); list1.add(new Person("王五",40)); System.out.println(list1); //public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。 Collections.sort(list1); System.out.println(list1); }

在compareTo中
this - 传递的参数就是升序
传递的参数 - this就是降序

Collections集合工具类中的sort(List,comparator)
public static <T> void sort(list<T> list,Comparator<? super T>);将集合中元素按照指定规则排序。
Comparator和Comparable的区别
Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法
Comparator:相当于找一个第三方,比较两个
当泛型是数据类型时:
public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(5); list.add(2); list.add(8); list.add(3); System.out.println(list); //public static <T> void sort(list<T> list,Comparator<? super T>);将集合中元素按照指定规则排序。 Collections.sort(list, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { //return o1-o2;//升序 return o2-o1;//降序 } }); System.out.println(list); }
运行结果:

当泛型是对象时:
public class Student { private String name; private int age; @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
public static void main(String[] args) { List<Student> list = new ArrayList<>(); list.add(new Student("张三",15)); list.add(new Student("李四",10)); list.add(new Student("王五",20)); System.out.println(list); //public static <T> void sort(list<T> list,Comparator<? super T>);将集合中元素按照指定规则排序。 Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o1.getAge()-o2.getAge();//升序,反之就是倒序 } }); System.out.println(list); }


浙公网安备 33010602011771号