java实现相同分数排名_java做成绩排名表,如何实现同分同名次

https://zhidao.baidu.com/question/1900171286360976020.html?qq-pf-to=pcqq.c2c

思路: 排序肯定还是要排的, 按照Java成绩来进行排练. 然后排名的时候,进行比较. 如果这一名的成绩和上一名的相同, 那么名次相同, 如果比上一名分数低,那么排名加一.

可以使用传统的,集合排序,输出. 也可以使用java8新提供的Stream API进行操作

参考代码如下

输出结果

另外一种情况,相同并列,不同跳过----

Collections.sort(stdGpas, new Comparator(){

@Override

public int compare(StdGpa s1, StdGpa s2) {

return -Double.compare(s1.getGpa(), s2.getGpa());

}

});

int index = 0;// 排名

int no = 0;//去重

double lastScore = -1;// 最近一次的分

for (int i = 0; i < stdGpas.size(); i++) {

StdGpa s = stdGpas.get(i);

if (Double.compare(lastScore, s.getGpa())!=0) { // 如果成绩和上一名的成绩不相同,那么排名+1

lastScore = s.getGpa();

index = index + 1 + no;

no = 0 ;

}else{

no++;

}

gpaRank.put(s.getId(), index);

}

24c003fbab37b3fd0e6b33479e979667.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值