环境准备
@Data
@ToString
class User{
private String name;
private Integer age;
}
1. 使用Comparator.comparing排序
public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User("zs", 18));
users.add(new User("ls", 15));
users.add(new User("ww", 19));
users.add(new User("zl", 20));
users.stream().sorted(Comparator.comparing(User::getName))
.collect(Collectors.toList())
.forEach(System.out::println);
}
输出:
User{name='ls', age=15}
User{name='ww', age=19}
User{name='zl', age=20}
User{name='zs', age=18}
2. 倒序reversed()
users.stream().sorted(Comparator.comparing(User::getName).reversed())
.collect(Collectors.toList())
.forEach(System.out::println);
输出:
User{name='zs', age=18}
User{name='zl', age=20}
User{name='ww', age=19}
User{name='ls', age=15}
3. thenComparing多条件排序
List<User> users = new ArrayList<>();
users.add(new User("zs", 18));
users.add(new User("zs", 19));
users.add(new User("ls", 15));
users.add(new User("ww", 19));
users.add(new User("zl", 20));
users.stream().sorted(Comparator.comparing(User::getName)
.thenComparing(Comparator.comparing(User::getAge)))
.collect(Collectors.toList())
.forEach(System.out::println);
输出:
User{name='ls', age=15}
User{name='ww', age=19}
User{name='zl', age=20}
User{name='zs', age=18}
User{name='zs', age=19}