import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class StudentComparable {
public static void main(String[] args) {
// 创建学生student集合list
List list = new ArrayList();
// 加入学生信息
list.add(new Student(1001, “Jack”, 80d, 75d, 82d));
list.add(new Student(1002, “Bruce”, 60d, 55d, 72d));
list.add(new Student(1003, “Gates”, 90d, 82d, 96d));
// 调用 Collections 的 sort 方法对学生集合进行排序
Collections.sort(list);
Collections.reverse(list); // 默认为从小到大排序,所以需要倒序操作
// 利用 NumberFormat 对分数进行格式化,所有平均分强制保留一位小数
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(1);
nf.setMinimumFractionDigits(1);
for (Student stu : list) {
System.out.println(stu.getId() + " " + stu.getName() + " " + nf.format(stu.getAverage()));
}
}
}
// 学生类,实现comparable接口
class Student implements Comparable {
private Integer id; // 学号
private String name; // 姓名
private Double math; // 数学成绩
private Double english; // 英语成绩
private Double java; // java成绩
// 构造方法,根据学号、姓名、数学、英语、java快速创建学生对象
public Student(Integer id, String name, Double math, Double english, Double java) {
this.id = id;
this.name = name;
this.math = math;
this.english = english;
this.java = java;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getMath() {
return math;
}
public void setMath(Double math) {
this.math = math;
}
public Double getEnglish() {
return english;
}
public void setEnglish(Double english) {
this.english = english;
}
public Double getJava() {
return java;
}
public void setJava(Double java) {
this.java = java;
}
// getAverage方法,获取数学、英语、java三门课的平均成绩
public Double getAverage() {
return (math + english + java) / 3;
}
// 根据平均分进行比较,大于返回1,小余返回-1,等于返回0
@Override
public int compareTo(Student stu) {
if (this.getAverage() > stu.getAverage()) {
return 1;
}
if (this.getAverage() < stu.getAverage()) {
return -1;
}
return 0;
}
}