main.java:
public class Main {
public static void main(String[] args) throws Exception{
testJDK8_sort();
}
private static List<User> initList() {
List<User> list = new ArrayList<>();
list.add(new User("lisa", 23));
list.add(new User("tom", 11));
list.add(new User("john", 16));
list.add(new User("jennis", 26));
list.add(new User("tin", 26));
list.add(new User("army", 26));
list.add(new User("mack", 19));
list.add(new User("jobs", 65));
return list;
}
private static void testJDK8_sort() {
List<User> list = initList();
// jdk8之前的排序
//test1(list);
// jdk8 lambda排序,带参数类型
//test2();
// jdk8 lambda排序,不带参数类型
//test3();
// jdk8 排序,User类静态方法引用
//test4();
// jdk8 升序排序,Comparator提供的静态方法
//test5();
// jdk8 降序排序,Comparator提供的静态方法
//test6();
// jdk8 组合排序,Comparator提供的静态方法,先按年纪排序,年纪相同的按名称排序
test7();
}
private static void test7() {
List<User> list;
list = initList();
Collections.sort(list, Comparator.comparing(User::getAge).thenComparing(User::getName).reversed());
list.forEach(System.out::println);
}
private static void test6() {
List<User> list;
list = initList();
Collections.sort(list, Comparator.comparing(User::getAge).reversed());
list.forEach(System.out::println);
System.out.println();
}
private static void test5() {
List<User> list;
list = initList();
Collections.sort(list, Comparator.comparing(User::getAge));
list.forEach(System.out::println);
System.out.println();
}
private static void test4() {
// List<User> list;
// list = initList();
// list.sort(User::compareAge);
// list.forEach(System.out::println);
System.out.println();
}
private static void test3() {
List<User> list;
list = initList();
list.sort((a1, a2) -> a1.getAge().compareTo(a2.getAge()));
list.forEach(System.out::println);
System.out.println();
}
private static void test2() {
List<User> list;
list = initList();
list.sort((User u1, User u2) -> u1.getAge().compareTo(u2.getAge()));
//list.forEach(System.out::println);
list.forEach(System.out::println);
System.out.println();
}
private static void test1(List<User> list) {
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.getAge().compareTo(o2.getAge());
}
});
System.out.println(list);
}
}
User.java:
/**
* Created by Administrator on 2018/5/23.
*/
public class User {
private String name ;
private Integer age ;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" + "name='" + name + '\'' + ", age=" + age + '}';
}
}