直接上代码
- 注:对象中属性不能为null
@Data
public class User {
private String name;
private Integer age;
private Integer gameLevel;
public User(String name, Integer age, Integer gameLevel) {
this.name = name;
this.age = age;
this.gameLevel = gameLevel;
}
public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User("a", 25, 8));
users.add(new User("c", 25, 4));
users.add(new User("b", 25, 4));
users.add(new User("a", 23, 7));
users.add(new User("d", 25, 4));
users.add(new User("a", 25, 6));
users.add(new User("b", 25, 4));
users.add(new User("a", 30, 4));
users.add(new User("a", 25, 4));
System.out.println("===========================================>排序前:");
users.forEach(user -> {
System.out.println(user);
});
// java8 复杂排序--先name,再age,再gameLevel,全部默认升序
users.sort(Comparator.comparing(User::getName)
.thenComparing(User::getAge)
.thenComparing(User::getGameLevel));
System.out.println("===========================================>排序后:默认全部升序");
users.forEach(user -> {
System.out.println(user);
});
// java8 复杂排序--先name升序,再age降序,再gameLevel升序
users.sort(Comparator.comparing(User::getName)
.thenComparing(User::getAge, Comparator.reverseOrder()) // Comparator.reverseOrder() 返回一个与 自然排序相反的比较器
.thenComparing(User::getGameLevel));
System.out.println("===========================================>先name升序,再age降序,再gameLevel升序");
users.forEach(user -> {
System.out.println(user);
});
}
运行结果: