题目:根据学生总成绩进行排名次
描述:某学校开设3门课:语文、数学和英语,按照总分从高到低排名次
要求:选用合适的集合存储学生的成绩,如果有相同名次,则下一名次空缺。例如有两个第2名,则第3名空缺
package com.xxx.exam;
import java.util.*;
class Student{
String name; //姓名
ArrayList<Integer>score; //成绩
Student(String name,ArrayList<Integer>List){
this.name=name;
this.score=List;
}
public int get_sum_score(){
int len=score.size();
int sum=0;
for(int i=0;i<len;i++){
sum+=score.get(i);
}
return sum;
}
}
public class HomeWork2 {
public static void main(String[] args) {
ArrayList<Integer> ss1 = new ArrayList<>();
ArrayList<Integer> ss2 = new ArrayList<>();
ArrayList<Integer> ss3 = new ArrayList<>();
ArrayList<Integer> ss4 = new ArrayList<>();
ArrayList<Student> stu = new ArrayList<>();
ss1.add(100);
ss1.add(70);
ss1.add(80);
ss2.add(100);
ss2.add(59);
ss2.add(21);
ss3.add(70);
ss3.add(70);
ss3.add(70);
ss4.add(70);
ss4.add(70);
ss4.add(70);
Student s1 = new Student("张三", ss1);
Student s2 = new Student("李华", ss2);
Student s3 = new Student("王无", ss3);
Student s4 = new Student("老六", ss4);
stu.add(s1);
stu.add(s2);
stu.add(s3);
stu.add(s4);
//map降序
TreeMap<Integer, Integer> map = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
for (Student temp : stu) {
if (map.containsKey(temp.get_sum_score())) {
//如果存在分数
map.put(temp.get_sum_score(), map.get(temp.get_sum_score()) + 1);
} else {
map.put(temp.get_sum_score(), 1);
}
}
//stu数组降序
Collections.sort(stu, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o2.get_sum_score() - o1.get_sum_score();
}
});
int last = 0;
int index = 0;
for (int value : map.values()) {
for (int j = 0; j < value; j++) {
System.out.println("第" + (last+1) + "名: "+stu.get(index).name+" 总分:"+stu.get(index).get_sum_score());
index++;
}
last += value;
}
}
}