使用Collections.sort()时,报java.lang.UnsupportedOperationException

from stackoverflow

https://stackoverflow.com/questions/21854353/why-does-collections-sort-throw-unsupported-operation-exception-while-sorting-by

    private List<MaterialVo> sortByLimit(List<MaterialVo> voList ){
        if(CollectionUtils.isEmpty(voList)){
           return null;
        }
//不明白为什么 这时我的voList变成了UNmodified状态,想要sort还要重新构造一下(如下)
        voList = new ArrayList<>(voList);//由于java.lang.UnsupportedOperationException,所以把list重新构造了一遍
        voList.sort((MaterialVo o1, MaterialVo o2) -> {
            if(null != o1 && null != o2){
                String flag1 = o1.getFlag();
                String flag2 = o2.getFlag();
                if(!StringUtils.isEmpty(flag1) && !StringUtils.isEmpty(flag2)){
                    int i = Integer.parseInt(flag2) - Integer.parseInt(flag1);
                    if(i == 0){//flag相同的时候 按照更新时间排一下顺序
                        LocalDateTime updateTime1 = o1.getUpdateTime();
                        LocalDateTime updateTime2 = o2.getUpdateTime();
                        if(null != updateTime1 && null != updateTime2){
                            boolean after = updateTime1.isAfter(updateTime2);
                            //如果前者晚于后者创建,则把前者排在前边
                            if(after){
                                return -1;
                            }else{
                                return 1;
                            }
                        }
                    }else {
                        return i;
                    }
                }
            }
            return 0;
        });

        return voList;
    }

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值