基础测试吧,这是我写的:
package com.itheima;
import java.util.TreeSet;
/**
* 第10题:声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet,
* 按照成绩排序输出结果(考虑成绩相同的问题)。
* @author zdl
*
*/
public class Test10 {
public static void main(String[] args) {
TreeSet<Student> ts = new TreeSet<Student>();
ts.add(new Student("a", 21, 94.5));
ts.add(new Student("b", 21, 94.5));// 用于比较的变量。和上面相比,成绩相同,名字不同;与下面相比成绩姓名相同,年龄不同。
ts.add(new Student("b", 24, 94.5));
ts.add(new Student("c", 24, 57));
ts.add(new Student("d", 24, 100));
System.out.println("姓名 年龄 成绩");
for (Student st : ts) {// 循环打印集合元素,按成绩从大到小排列。
System.out.println(st.getName() + " " + st.getAge() + " "
+ st.getscore());
}
}
}
// 学生类实现Comparable接口
class Student implements Comparable<Student> {
private String name;
private int age;
private double score;
// 构造函数
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
// 设置属性
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setScore(double score) {
this.score = score;
}
// 获取属性
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public double getscore() {
return this.score;
}
// 覆盖compareTo方法
public int compareTo(Student st) {
int num = -new Double(this.score).compareTo(new Double(st.score));// 让成绩从大到小排列
if (num == 0) {
num = this.name.compareTo(st.name);// 成绩相同时,按名字从小到大排列
if (num == 0)
return new Integer(this.age).compareTo(new Integer(st.age));// 成绩名字都相同时,按年龄从小到大排列
}
return num;
}
} |