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 serialVersio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值