package com.cai.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * 目标,实现对List进行自定义排序 */ public class ListSort { public static void main(String[] args) { method3(); } /** * 1.直接Collections进行排序 */ public static void method1(){ List<Integer> listInteger = new ArrayList<Integer>(); listInteger.add(5); listInteger.add(8); listInteger.add(1); listInteger.add(22); Collections.sort(listInteger); System.out.println(listInteger.toString());//[1, 5, 8, 22] } /** * 2.进行实体类的排序 ,实体类实现Comparable接口,自定义排序方式 */ public static void method2(){ List<User> userList = new ArrayList<User>(); userList.add(new User("路飞",19)); userList.add(new User("香克斯",42)); userList.add(new User("大妈",50)); userList.add(new User("黑胡子",39)); userList.add(new User("凯多",49)); Collections.sort(userList); System.out.println(userList.toString()); //[User{name='路飞', age=19}, User{name='黑胡子', age=39}, User{name='香克斯', age=42}, User{name='凯多', age=49}, User{name='大妈', age=50}] } /** * Collections中的匿名内部类进行排序 */ public static void method3(){ List<User> userList = new ArrayList<User>(); userList.add(new User("路飞",19)); userList.add(new User("香克斯",42)); userList.add(new User("大妈",50)); userList.add(new User("黑胡子",39)); userList.add(new User("凯多",49)); Collections.sort(userList, new Comparator<User>() { @Override public int compare(User o1, User o2) { //这里 和 放法2 打印区分 这里用年龄降序 int dif = o1.getAge()-o2.getAge(); if(dif>0){ return -1; }else if(dif<0){ return 1; } return 0; } }); System.out.println(userList.toString()); //[User{name='大妈', age=50}, User{name='凯多', age=49}, User{name='香克斯', age=42}, User{name='黑胡子', age=39}, User{name='路飞', age=19}] } } class User implements Comparable<User>{ private String name; private int age; public User(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 String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + '}'; } /** * 重写Comparable接口的compareTo方法, * 根据年龄升序排列,降序修改相减顺序即可 * @param * @return */ @Override public int compareTo(User user) { return this.age-user.age; } }