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

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;
	}

	@Override
	public 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;
	}

	@Override
	public 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;
	}

	@Override
	public 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值