利用Stream给集合排序

public class StreamSortTest {

    @Data
    @AllArgsConstructor
    static class OrgAccountVo {
        private String userId;
        private String accountRole;
        private Date joinTime;
    }

    public static void main(String[] args) {
        List<OrgAccountVo> accountVoList = new ArrayList<>();
        accountVoList.add(new OrgAccountVo("5","管理员", new Date()));
        accountVoList.add(new OrgAccountVo("3","成员", new Date()));
        accountVoList.add(new OrgAccountVo("1","成员", new Date()));
        accountVoList.add(new OrgAccountVo("4","成员", new Date()));
        accountVoList.add(new OrgAccountVo("2","成员", new Date()));

        System.out.println("**************************排序前**************************");
        accountVoList.stream().forEach(vo -> System.out.println(vo));

        System.out.println("**************************按照userId排序**************************");
        List<OrgAccountVo> sortedAccountVoList = accountVoList.stream().sorted(Comparator.comparing(OrgAccountVo::getUserId)).collect(Collectors.toList());
        sortedAccountVoList.stream().forEach(vo -> System.out.println(vo));

        System.out.println("**************************按照成员排序**************************");
        List<OrgAccountVo> accountVoList1 = accountVoList.stream().sorted(Comparator.comparing(OrgAccountVo::getAccountRole)).collect(Collectors.toList());
        accountVoList1.stream().forEach(vo -> System.out.println(vo));

        System.out.println("**************************按照成员和时间排序**************************");
        List<OrgAccountVo> accountVoList2 = accountVoList.stream().sorted(Comparator.comparing(OrgAccountVo::getAccountRole).reversed()
                .thenComparing(OrgAccountVo::getJoinTime)).collect(Collectors.toList());
        accountVoList2.stream().forEach(vo -> System.out.println(vo));

    }
}

参考链接

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值