package experiment5.exp4;
import java.util.*;
public class SortStudentScores {
public static void main(String[] args) {
Set<Student> set = new HashSet<>();
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的姓名和成绩,当输入为负数是结束输入");
String name;
int score;
int i = 1;
while (true) {
Student tmp = new Student();
System.out.println("请输入第" + i + "位学生的姓名:");
name = sc.nextLine();
tmp.setName(name);
System.out.println("请输入第" + i++ + "位学生的成绩:(输入负数,结束输入)");
score = Integer.parseInt(sc.nextLine());
if (score < 0) break;
tmp.setScore(score);
set.add(tmp);
}
List<Student> list = new ArrayList<>();
for (Student x : set) {
list.add(x);
}
Collections.sort(list);
System.out.println("您输入的成绩生成成绩单结果:");
for(Student x:list){
System.out.println(x);
}
System.out.println("前三名学生的姓名为:");
Iterator<Student> it=list.iterator();
for(int j = 0;j<3&&it.hasNext();j++){
System.out.println(it.next());
}
}
}
class Student implements Comparable<Student> {
String name;
int score;
public void setName(String name) {
this.name = name;
}
public void setScore(int score) {
this.score = score;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return score == student.score &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, score);
}
@Override
public int compareTo(Student o) {
return o.score - this.score;
}
@Override
public String toString() {
return name + "--->" + score;
}
}