要求:
* •(1)创建学生类,有以下两个属性:姓名name和成绩score,分别是字符串类型和整型。
* •(2)实现Comparator接口,让学生按照以下规则排序:成绩高的学生在前面,成绩相同的学生,姓名拼音按字典顺序排列
* •(3)把学生实例放到List集合中,输出集合中的所有学生
package dms.java.base.collection;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Locale;
/**
* •(1)创建学生类,有以下两个属性:姓名name和成绩score,分别是字符串类型和整型。
* •(2)实现Comparator接口,让学生按照以下规则排序:成绩高的学生在前面,成绩相同的学生,姓名拼音按字典顺序排列
* •(3)把学生实例放到List集合中,输出集合中的所有学生
* @author BrightSt
*
*/
public class StudentComparator {
static ArrayList<Student> studentList = new ArrayList<>();
public static void main(String[] args) {
studentList.add(new Student("赵六", 70));
studentList.add(new Student("王五", 85));
studentList.add(new Student("张三", 99));
studentList.add(new Student("李四", 85));
studentList.add(new Student("孙七", 75));
Collections.sort(studentList);
for(int i=0;i<studentList.size();i++){
System.out.println(studentList.get(i).getName()+" "+studentList.get(i).getScore());
}
}
}
class Student implements Comparable<Student>{
private String name;
private int score;
public Student(String name,int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public int compareTo(Student o) {
if(this.getScore() != o.getScore()){
return o.getScore()-this.getScore();
}else{
Collator instance = Collator.getInstance(Locale.CHINA);
return instance.compare(this.getName(), o.getName());
}
}
}
要想实现比较功能一定要实现Comparable接口里的 compareTo方法,例如这里的比较学生的成绩、姓名,student实现 compareTo方法。重点是了解:
Collator instance = Collator.getInstance(Locale.CHINA);的用法