举例说明:
现在有一个list集合rclistday。
实体中有字段:
private int ranking; //排名
private Double sal_amt; //成交金额
下面是排序代码,修改list名称和你要根据什么字段排名的名称,就可直接使用(注,list的顺序需要是根据要排名的字段呈倒序)
//定义个变量保存名次
int r = 1;
for (int j = 0; j < rclistday.size(); j++) {
//判断一下,最后一行不能进
if (j<rclistday.size()-1) {
//判断当前的值和下一个值相等时进入
if (rclistday.get(j).getSal_qty() == rclistday.get(j+1).getSal_qty()) {
//压人名次
rclistday.get(j).setRanking(r);
//否则的话,如果当前值大于下一个值,说明下个值就是下一个名次,先给当前值压人当前名次,然后全局变量名次r加1
}else if(rclistday.get(j).getSal_qty() > rclistday.get(j+1).getSal_qty()){
rclistday.get(j).setRanking(r);
r++;
}
//否则,当循环到最后一个值的时候,进入(并且要满足总行数大于1)
}else if(j == rclistday.size()-1 && rclistday.size() > 1){
//如果最后一个值等于到数第二个值得话,说明最后一个值和上一个名次相同,压人当前名次,否则的话,名次加1压人
if(rclistday.get(j).getSal_qty() == rclistday.get(j-1).getSal_qty()){
rclistday.get(j).setRanking(r);
}else if(rclistday.get(j).getSal_qty() < rclistday.get(j-1).getSal_qty()){
rclistday.get(j).setRanking(r);
}else{
rclistday.get(j).setRanking(r+1);
}
}
//如果总行数只用一行,排名压人1
if(rclistday.size() == 1){
rclistday.get(j).setRanking(1);
}
}