====================================================== 以上是java8之前的用法,java8提供了多种操作方式。博文修改2017.4.7
实体类
@AllArgsConstructor @NoArgsConstructor @Data class Teacher { private String name; private Integer age; } 使用Lambda表达式 List<Teacher> teachers = new ArrayList<Teacher>(); teachers.add(new Teacher("张三", 24)); teachers.add(new Teacher("李四", 23)); teachers.add(new Teacher("王五", 25)); System.out.println("before sort:"); for (Teacher bean : teachers) { System.out.println("before sort---->age: " + bean.getAge()); } //Lambda teachers.sort((s1, s2) -> s1.getAge().compareTo(s2.getAge())); System.out.println("after sort:"); for (Teacher bean : teachers) { System.out.println("after sort---->age: " + bean.getAge()); } 使用Comparator操作器 //Comparator Collections.sort(teachers, Comparator.comparing(Teacher::getAge)); 反序排列 Comparator<Teacher> comparator = (t1, t2) -> t1.getAge().compareTo(t2.getAge()); teachers.sort(comparator.reversed()); 组合排序 //组合排序 teachers.sort(Comparator.comparing(Teacher::getAge).thenComparing(Teacher::getName)); 完整示例代码 package com.huixin.utils.common; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * ListSort类 * * @author Lance * @date 2017/03/10 */ public class ListSortJava8 { public static void main(String[] args) { List<Teacher> teachers = new ArrayList<Teacher>(); teachers.add(new Teacher("张三", 24)); teachers.add(new Teacher("李四", 23)); teachers.add(new Teacher("王五", 25)); teachers.add(new Teacher("钱二", 23)); System.out.println("before sort:"); for (Teacher bean : teachers) { System.out.println("before sort---->age: " + bean.getAge() + "==name:" + bean.getName()); } //Lambda // teachers.sort((t1, t2) -> s1.getAge().compareTo(s2.getAge())); //Comparator // Collections.sort(teachers, Comparator.comparing(Teacher::getAge)); //reversed // Comparator<Teacher> comparator = (t1, t2) -> t1.getAge().compareTo(t2.getAge()); // teachers.sort(comparator.reversed()); //组合排序 teachers.sort(Comparator.comparing(Teacher::getAge).thenComparing(Teacher::getName)); System.out.println("after sort:"); for (Teacher bean : teachers) { System.out.println("after sort---->age: " + bean.getAge() + "==name:" + bean.getName()); } } } @AllArgsConstructor @NoArgsConstructor @Data class Teacher { private String name; private Integer age; }