上线前一天 排序突然报错 https://www.cnblogs.com/firstdream/p/7204067.html list里面 两个map的 sortFild对应的值都是0 ,网上搜了bug原理 发现 必须返回 一个0 所以改了代码逻辑 把return 0;单独抽到最后一行 才算解决; 错误原理看上面的博客介绍 public static void CollectionSortForListMap(List<Map> list, String sortField,Boolean isAsc ) { if(CollectionUtil.isNotEmpty(list)){ Collections.sort(list, (o1, o2) -> { if(null==o1) return -1; if(null==o2) return 1; if(o1==o2) return 0; Object fieldValue; Object fieldValue2; if(o1 instanceof Map &&o2 instanceof Map){ fieldValue = ((Map) o1).get(sortField); fieldValue2 = ((Map) o2).get(sortField); }else{ String methodName = "get".concat(StrUtil.upperFirst(sortField)); fieldValue = ReflectUtil.invoke(o1, methodName); fieldValue2 = ReflectUtil.invoke(o2, methodName); } Double rate1 =Convert.toDouble(fieldValue); Double rate2 = Convert.toDouble(fieldValue2); if(null==rate1) rate1=0.0; if(null==rate2) rate2=0.0; if (rate1 > rate2){ if(isAsc) return 1; else return -1; } if(rate1 < rate2){ if(isAsc) return -1; else return 1; } return 0; }); } }
排序jdk8的异常Comparison method violates its general contract!
最新推荐文章于 2024-06-21 17:20:07 发布