Stream流对集合先按某个字段升序排列再按某个字段降序排列

直接上代码

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    //学生id
    private Integer userId;

    //学生姓名
    private String status;

    //学生年龄
    private Integer age;

    //学生班级
    private Integer classNo;
}
public class Test4 {
    public static void main(String[] args) {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "close", 20, 1));
        userList.add(new User(2, "close", 18, 2));
        userList.add(new User(3, "open", 20, 1));
        userList.add(new User(4, "close", 19, 1));
        userList.add(new User(5, "open", 17, 1));
        userList.add(new User(6, "open", 16, 1));
        userList.add(new User(7, "open", 18, 1));
        userList.add(new User(8, "open", 19, 2));
        userList.add(new User(9, "open", 21, 2));
        userList = userList.stream().sorted(Comparator.comparing(User::getStatus).thenComparing(User::getAge).reversed()).collect(Collectors.toList());
        for (User user : userList) {
            System.out.println(user);
        }
    }

}

如上,先按照status升序 ,再按照age降序

posted @ 2022-09-07 11:00  24、  阅读(752)  评论(0)    收藏  举报