猿问

对象排列问题

项目任务是要处理一个田径赛事的比赛结果。需要实现下面功能:
把某个比赛项目的成绩从高到低结果排序并在前面加上名次。成绩相同者名次相同,并按人名的字典(字母)顺序排序)。

比如本来结果的列表ArrayList<Result>输出如下:

成绩 名字
7.00 Donald Li
6.00 Joan Chen
7.00 Alan Jiang
4.00 Tricia Zhang
7.00 Ada Wang
6.00 William Sf

方法应该达到的理想效果如下
1 7.00 Ada Wang
1 7.00 Alan Jiang
1 7.00 Donald Li
4 6.00 Joan Chen
4 6.00 William Sf
6 4.00 Tricia Zhang

本人菜鸟,试了很多种方法都排不对,请能者大神不吝赐教指点迷津,非常感谢!

幕布斯6054654
浏览 380回答 5
5回答

慕沐林林

用 Collections.sort(list, comparator) 进行排序在覆写的sort方法中,先判断分数是否相同,如果相同则使用 for 循环遍历两个人名的每个位置上的字符直到某个位置上的字符有大小关系;如果不相同则直接返回成绩的大小关系。

烙印99

非常感谢回复! 现在我已经把结果列表按成绩高低和名字字母顺序排列好了,结果列表现在是resultList: 7.00 Ada Wang 7.00 Alan Jiang7.00 Donald Li6.00 Joan Chen6.00 William Sf4.00 Tricia Zhang 下面开始往结果前面加名次 int[] rank=new int[resultList.size()] ;rank[0]=1;for(int i=1; i<resultList.size();i++) {if(resultList.get(i).getResultValue()==resultList.get(i-1).getResultValue()) {rank[i]=rank[i-1];}else {rank[i]=i+1;} } for(int i=0; i<resultList.size();i++) {System.out.println(rank[i]+" "+resultList.get(i).getResultValue()+" "+resultList.get(i).getParticipant().getName()+" "+resultList.get(i).getParticipant().getTeam()); } 打印结果居然是: 1 7.00 Ada Wang 2 7.00 Alan Jiang3 7.00 Donald Li4 6.00 Joan Chen5 6.00 William Sf6 4.00 Tricia Zhang 很奇怪。当两项结果值相同时,怎么没有执行if结果把rank变为相同呢?
随时随地看视频慕课网APP

相关分类

Java
我要回答