要求:
* •(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);的用法
