list通过过stream使用sort进行升降排序

基于jdk1.8

.stream().sorted.....collect():返回新的有序集合,原集合顺序不变

.sort...:返回void,原集合顺序变为有序

  Subject subject1 = new Subject("语文", 91.0);
        Subject subject2 = new Subject("语文", 94.0);
        Subject subject3 = new Subject("语文", 92.0);
        Subject subject4 = new Subject("语文", 90.0);
        List<Subject> subjectList = new ArrayList<>();
        subjectList.add(subject1);
        subjectList.add(subject2);
        subjectList.add(subject3);
        subjectList.add(subject4);
        List<Subject> subjectListNew = new ArrayList<>();
 
 //排序生效,使用stream和collect
        subjectListNew = subjectList.stream().sorted((s1, s2) -> s1.getGrade().compareTo(s2.getGrade())).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(subjectListNew));
        //[{"grade":90.0,"name":"语文"},{"grade":91.0,"name":"语文"},{"grade":92.0,"name":"语文"},{"grade":94.0,"name":"语文"}]
        System.out.println(JSON.toJSONString(subjectList));//原集合没变
        //[{"grade":91,"id":1,"name":"语文"},{"grade":94,"id":2,"name":"数学"},{"grade":92,"id":3,"name":"英语"},{"grade":90,"id":4,"name":"语文"}]
 
        //排序生效,不使用stream和collect
        subjectList.sort((s1, s2) -> s1.getGrade().compareTo(s2.getGrade()));
        System.out.println(JSON.toJSONString(subjectList));//原集合变化
        //[{"grade":90.0,"name":"语文"},{"grade":91.0,"name":"语文"},{"grade":92.0,"name":"语文"},{"grade":94.0,"name":"语文"}]
 
        //排序不生效,使用stream时需要在末尾collect
        subjectList.stream().sorted((s1, s2) -> s1.getGrade().compareTo(s2.getGrade()));
        System.out.println(JSON.toJSONString(subjectList));
        //[{"grade":91.0,"name":"语文"},{"grade":94.0,"name":"语文"},{"grade":92.0,"name":"语文"},{"grade":90.0,"name":"语文"}]
 
        //分数升序排列
        subjectListNew = subjectList.stream().sorted((s1, s2) -> {
            return s1.getGrade().compareTo(s2.getGrade());
        }).collect(Collectors.toList());//如果使用分号,需要加{}和return
        System.out.println(JSON.toJSONString(subjectListNew));
        //[{"grade":90.0,"name":"语文"},{"grade":91.0,"name":"语文"},{"grade":92.0,"name":"语文"},{"grade":94.0,"name":"语文"}]
 
        //分数降序排列
        subjectListNew = subjectList.stream().sorted(Comparator.comparingDouble(Subject::getGrade).reversed()).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(subjectListNew));
        //[{"grade":94.0,"name":"语文"},{"grade":92.0,"name":"语文"},{"grade":91.0,"name":"语文"},{"grade":90.0,"name":"语文"}]
 
        //分数升序排列
        subjectListNew = subjectList.stream().sorted(Comparator.comparingDouble(Subject::getGrade)).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(subjectListNew));
        //[{"grade":90.0,"name":"语文"},{"grade":91.0,"name":"语文"},{"grade":92.0,"name":"语文"},{"grade":94.0,"name":"语文"}]
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值