背景:
实际页面上 所有的分值都是按照JSON格式存储在一个字符串中 存储在同一个字段中:
{"ownPTotal":"10>0","ownOTotal":"8>0","ownTotal1":"18","ownTotal2":"80","ownTotal3":"20","ownTotal4":"118","leadTotal1":"20","leadTotal2":"80","leadTotal3":"20","leadTotal4":"120","chiefCheck1":"","chiefCheck2":"","leadTotal5":"140"}
现在 需要按照 其中的 几种分值 进行升序/降序的排序操作
解决方法:
【因为不是按照原实体的中的字段进行排序,因此需要新建一个实体,将原实体中有用的字段和需要使用的值从字段中抽离出来 在新实体中设置成字段,如果需要进行排序的字段是原实体中就存在的,那就不需要新建实体了】
重点关注:
实现 Comparable接口需要实现的比较方法 这里动态比较 是按照 1.哪个字段进行排序 2.升序/降序
//排序方法
@Overridepublic intcompareTo(NewMonthPerEntity o) {double a1 = this.whichProperty.equals("leadTotal5") ? this.leadTotal5 : (this.whichProperty.equals("leadTotal4") ? this.leadTotal4 :(this.whichProperty.equals("ownTotal4") ? this.ownTotal4 :this.ownTotal4));double a2 = o.whichProperty.equals("leadTotal5") ? o.leadTotal5 : (o.whichProperty.equals("leadTotal4") ? o.leadTotal4 :(o.whichProperty.equals("ownTotal4") ?o.ownTotal4 :o.ownTotal4));if(this.ascDesc){//若是升序
return a1 > a2 ? 1 : -1;
}else{return a1 > a2 ? -1 : 1;
}
}
<