JSONObject转List按照特定属性排序并生成对应排名

来源:互联网 发布:倚天蝴蝶形态指标源码 编辑:程序博客网 时间:2024/06/07 01:09

1、效果图



2、核心代码


List<StuScore> stu = JSONObject.parseArray(jStuScores.toJSONString(), StuScore.class);//JSONObject.parseArray(jStuScores.toJSONString(), StuScore.class);Collections.sort(stu, new Comparator<StuScore>(){                /*               * int compare(Student o1, Student o2) 返回一个基本类型的整型,               * 返回负数表示:o1 小于o2,               * 返回0 表示:o1和o2相等,               * 返回正数表示:o1大于o2。               */              public int compare(StuScore o1, StuScore o2) {                          double i1 =0;            double i2 =0;                        if((o1.getStuXkScoreAndRank()).getSh() == null && (o2.getStuXkScoreAndRank()).getSh() == null){            i1 = 0;            i2 = 0;}else if((o1.getStuXkScoreAndRank()).getSh() != null && (o2.getStuXkScoreAndRank()).getSh() == null){String str1= ((o1.getStuXkScoreAndRank()).getSh()).getStuScore();i1 =Double.valueOf(str1);i2 = 0;}else if ((o1.getStuXkScoreAndRank()).getSh() == null && (o2.getStuXkScoreAndRank()).getSh() != null){String str2= ((o2.getStuXkScoreAndRank()).getSh()).getStuScore();i2 =Double.valueOf(str2);i1 = 0;}else{String str1= ((o1.getStuXkScoreAndRank()).getSh()).getStuScore();            String str2= ((o2.getStuXkScoreAndRank()).getSh()).getStuScore();                        i1 =Double.valueOf(str1);            i2 =Double.valueOf(str2);}                                         //按照学生的生化成绩进行倒序排列                  if(i1 < i2){                      return 1;                  }                  if(i1 == i2){                      return 0;                  }                  return -1;              }          });int j = 1;for(int i = 0; i<stu.size()-1; i++ ){StuScore stu1 = stu.get(i);StuScore stu2 = stu.get(i+1);StuXkScoreAndRank stuScore1 = stu1.getStuXkScoreAndRank();StuXkScoreAndRank stuScore2 = stu2.getStuXkScoreAndRank();Xueke sh1 =stuScore1.getSh();Xueke sh2 =stuScore2.getSh();if(sh1 == null || sh2 ==null)continue;if(i == 0){sh1.setStuGradeRank(""+j);}if((sh2.getStuScore()).equals(sh1.getStuScore())){j++;sh2.setStuGradeRank(sh1.getStuGradeRank());}else{j++;sh2.setStuGradeRank(""+j);}}

package cn.doofen.entity;import java.io.Serializable;public class StuScore implements Serializable{/** *  */private static final long serialVersionUID = 8312934080525807061L;private StuXkScoreAndRank stuXkScoreAndRank;private String stuMixRank;private String stuMixRank1;private String classId;private String stuMixScore;private String stuMixScore1;private String stuPriMixRank;private String stuId;private String className;private String examSort;private String stuName;private String stuPriMixScore;private String categoryName;private String subjects;private String categoryId;public StuXkScoreAndRank getStuXkScoreAndRank() {return stuXkScoreAndRank;}public void setStuXkScoreAndRank(StuXkScoreAndRank stuXkScoreAndRank) {this.stuXkScoreAndRank = stuXkScoreAndRank;}public String getStuMixRank() {return stuMixRank;}public void setStuMixRank(String stuMixRank) {this.stuMixRank = stuMixRank;}public String getStuMixRank1() {return stuMixRank1;}public void setStuMixRank1(String stuMixRank1) {this.stuMixRank1 = stuMixRank1;}public String getClassId() {return classId;}public void setClassId(String classId) {this.classId = classId;}public String getStuMixScore() {return stuMixScore;}public void setStuMixScore(String stuMixScore) {this.stuMixScore = stuMixScore;}public String getStuMixScore1() {return stuMixScore1;}public void setStuMixScore1(String stuMixScore1) {this.stuMixScore1 = stuMixScore1;}public String getStuPriMixRank() {return stuPriMixRank;}public void setStuPriMixRank(String stuPriMixRank) {this.stuPriMixRank = stuPriMixRank;}public String getStuId() {return stuId;}public void setStuId(String stuId) {this.stuId = stuId;}public String getClassName() {return className;}public void setClassName(String className) {this.className = className;}public String getExamSort() {return examSort;}public void setExamSort(String examSort) {this.examSort = examSort;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public String getStuPriMixScore() {return stuPriMixScore;}public void setStuPriMixScore(String stuPriMixScore) {this.stuPriMixScore = stuPriMixScore;}public String getCategoryName() {return categoryName;}public void setCategoryName(String categoryName) {this.categoryName = categoryName;}public String getSubjects() {return subjects;}public void setSubjects(String subjects) {this.subjects = subjects;}public String getCategoryId() {return categoryId;}public void setCategoryId(String categoryId) {this.categoryId = categoryId;}public static long getSerialversionuid() {return serialVersionUID;}public StuScore() {super();// TODO Auto-generated constructor stub}public StuScore(StuXkScoreAndRank stuXkScoreAndRank, String stuMixRank,String stuMixRank1, String classId, String stuMixScore,String stuMixScore1, String stuPriMixRank, String stuId,String className, String examSort, String stuName,String stuPriMixScore, String categoryName, String subjects,String categoryId) {super();this.stuXkScoreAndRank = stuXkScoreAndRank;this.stuMixRank = stuMixRank;this.stuMixRank1 = stuMixRank1;this.classId = classId;this.stuMixScore = stuMixScore;this.stuMixScore1 = stuMixScore1;this.stuPriMixRank = stuPriMixRank;this.stuId = stuId;this.className = className;this.examSort = examSort;this.stuName = stuName;this.stuPriMixScore = stuPriMixScore;this.categoryName = categoryName;this.subjects = subjects;this.categoryId = categoryId;}@Overridepublic String toString() {return "StuScore [stuXkScoreAndRank=" + stuXkScoreAndRank+ ", stuMixRank=" + stuMixRank + ", stuMixRank1=" + stuMixRank1+ ", classId=" + classId + ", stuMixScore=" + stuMixScore+ ", stuMixScore1=" + stuMixScore1 + ", stuPriMixRank="+ stuPriMixRank + ", stuId=" + stuId + ", className="+ className + ", examSort=" + examSort + ", stuName=" + stuName+ ", stuPriMixScore=" + stuPriMixScore + ", categoryName="+ categoryName + ", subjects=" + subjects + ", categoryId="+ categoryId + "]";}}

package cn.doofen.entity;import com.alibaba.fastjson.annotation.JSONField;public class StuXkScoreAndRank {@JSONField(name="1") private Xueke yw;  @JSONField(name="2") private Xueke sx;  @JSONField(name="3") private Xueke yy;  @JSONField(name="4") private Xueke wl;  @JSONField(name="5") private Xueke sh;  @JSONField(name="6") private Xueke ls;  @JSONField(name="7") private Xueke dl;  @JSONField(name="8") private Xueke zz;  @JSONField(name="9") private Xueke ty;public Xueke getYw() {return yw;}public void setYw(Xueke yw) {this.yw = yw;}public Xueke getSx() {return sx;}public void setSx(Xueke sx) {this.sx = sx;}public Xueke getYy() {return yy;}public void setYy(Xueke yy) {this.yy = yy;}public Xueke getWl() {return wl;}public void setWl(Xueke wl) {this.wl = wl;}public Xueke getSh() {return sh;}public void setSh(Xueke sh) {this.sh = sh;}public Xueke getLs() {return ls;}public void setLs(Xueke ls) {this.ls = ls;}public Xueke getDl() {return dl;}public void setDl(Xueke dl) {this.dl = dl;}public Xueke getZz() {return zz;}public void setZz(Xueke zz) {this.zz = zz;}public Xueke getTy() {return ty;}public void setTy(Xueke ty) {this.ty = ty;}public StuXkScoreAndRank() {super();// TODO Auto-generated constructor stub}public StuXkScoreAndRank(Xueke yw, Xueke sx, Xueke yy, Xueke wl, Xueke sh,Xueke ls, Xueke dl, Xueke zz, Xueke ty) {super();this.yw = yw;this.sx = sx;this.yy = yy;this.wl = wl;this.sh = sh;this.ls = ls;this.dl = dl;this.zz = zz;this.ty = ty;}@Overridepublic String toString() {return "StuXkScoreAndRank [yw=" + yw + ", sx=" + sx + ", yy=" + yy+ ", wl=" + wl + ", sh=" + sh + ", ls=" + ls + ", dl=" + dl+ ", zz=" + zz + ", ty=" + ty + "]";} }

package cn.doofen.entity;public class Xueke {private String stuScore;private String stuScore1;private String stuGradeRank;private String stuGradeRank1;private String master;public String getStuScore() {return stuScore;}public void setStuScore(String stuScore) {this.stuScore = stuScore;}public String getStuScore1() {return stuScore1;}public void setStuScore1(String stuScore1) {this.stuScore1 = stuScore1;}public String getStuGradeRank() {return stuGradeRank;}public void setStuGradeRank(String stuGradeRank) {this.stuGradeRank = stuGradeRank;}public String getStuGradeRank1() {return stuGradeRank1;}public void setStuGradeRank1(String stuGradeRank1) {this.stuGradeRank1 = stuGradeRank1;}public String getMaster() {return master;}public void setMaster(String master) {this.master = master;}public Xueke() {super();// TODO Auto-generated constructor stub}public Xueke(String stuScore, String stuScore1, String stuGradeRank,String stuGradeRank1, String master) {super();this.stuScore = stuScore;this.stuScore1 = stuScore1;this.stuGradeRank = stuGradeRank;this.stuGradeRank1 = stuGradeRank1;this.master = master;}@Overridepublic String toString() {return "Xueke [stuScore=" + stuScore + ", stuScore1=" + stuScore1+ ", stuGradeRank=" + stuGradeRank + ", stuGradeRank1="+ stuGradeRank1 + ", master=" + master + "]";}}

3、数据结构


 {        "stuCode": "09040903",        "stuXkScoreAndRank": {            "3": {                "stuScore": 93.0,                "stuGradeRank": 2            },            "2": {                "stuScore": 93.0,                "stuGradeRank": 9            },            "1": {                "stuScore": 88.0,                "stuGradeRank": 5            },            "7": {                "stuScore": 80.0,                "stuGradeRank": 36            },            "6": {                "stuScore": 94.0,                "stuGradeRank": 1            },            "5": {                "stuScore": 84.0,                "stuGradeRank": 5            },            "4": {                "stuScore": 81.0,                "stuGradeRank": 63            },            "9": {                "stuScore": 41.0,                "stuGradeRank": 4            }        },        "classId": 11210015011,        "subjects": "5|9|6|7",        "categoryId": 2,        "stuMixScore": 613.0,        "categoryName": "化学-生物-历史-地理",        "stuMixRank": 1,        "classCode": 11,        "stuPriMixRank": 3,        "stuId": 1121001500000118,        "className": "11班",        "examSort": 3,        "stuName": "陈师尧",        "stuPriMixScore": 274.0    },    {        "stuCode": "09044393",        "stuXkScoreAndRank": {            "3": {                "stuScore": 87.5,                "stuGradeRank": 21            },            "2": {                "stuScore": 79.0,                "stuGradeRank": 81            },            "1": {                "stuScore": 88.0,                "stuGradeRank": 5            },            "7": {                "stuScore": 73.0,                "stuGradeRank": 56            },            "6": {                "stuScore": 93.0,                "stuGradeRank": 2            },            "5": {                "stuScore": 71.0,                "stuGradeRank": 62            },            "4": {                "stuScore": 74.0,                "stuGradeRank": 107            },            "9": {                "stuScore": 36.0,                "stuGradeRank": 36            }        },        "classId": 11210015011,        "subjects": "5|9|6|7",        "categoryId": 2,        "stuMixScore": 565.5,        "categoryName": "化学-生物-历史-地理",        "stuMixRank": 2,        "classCode": 11,        "stuPriMixRank": 34,        "stuId": 1121001500000137,        "className": "11班",        "examSort": 3,        "stuName": "陈雨涵",        "stuPriMixScore": 254.5    },    {        "stuCode": "09044804",        "stuXkScoreAndRank": {            "3": {                "stuScore": 85.0,                "stuGradeRank": 33            },            "2": {                "stuScore": 88.0,                "stuGradeRank": 32            },            "1": {                "stuScore": 77.0,                "stuGradeRank": 90            },            "7": {                "stuScore": 86.0,                "stuGradeRank": 16            },            "6": {                "stuScore": 85.0,                "stuGradeRank": 8            },            "5": {                "stuScore": 38.0,                "stuGradeRank": 36            },            "4": {                "stuScore": 87.0,                "stuGradeRank": 26            }        },        "classId": 11210015009,        "subjects": "4|6|7",        "categoryId": 8,        "stuMixScore": 546.0,        "categoryName": "物理-历史-地理",        "stuMixRank": 3,        "classCode": 9,        "stuPriMixRank": 40,        "stuId": 1121001500000083,        "className": "9班",        "examSort": 3,        "stuName": "胡嘉",        "stuPriMixScore": 250.0    },



阅读全文
0 0
原创粉丝点击