/*
10、 声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)。
基本思路:利用TreeSet集合的特点:可以对Set集合中的元素排序,(排序是按指定的规则排序)。考虑到分数可能相同,所以在分数相同的情况下可以比较
学生的姓名或者年龄。
*/
import java.util.*;
class Test_10
{
public static void main(String[] args)
{
/**
*把五个对象装入TreeSet中
*/
TreeSet ts = new TreeSet();
ts.add(new Student("陈明",20,88f));
ts.add(new Student("郭文佳",21,91.5f));
ts.add(new Student("胡可佳",19,90f));
ts.add(new Student("杨诗雨",18,95f));
ts.add(new Student("孙静",22,88f));
/**
*使用迭代器遍历元素
*/
for(Iterator it = ts.iterator();it.hasNext();)
{
Student s = (Student)it.next();
show(s.getName()+"**"+s.getAge()+"**"+s.getScore());
}
}
/**
*这个方法用于打印
*/
public static void show(Object obj)
{
System.out.println(obj);
}
}
/**
*Student类实现Compareable接口,强制性的让学生具备比较性
*/
class Student implements Comparable
{
private String name;
private int age;
private float score;
Student(String name,int age,float score)
{
this.name = name;
this.age = age;
this.score = score;
}
/**
*获取学生的姓名
*/
public String getName()
{
return name;
}
/**
*获取学生的年龄
*/
public int getAge()
{
return age;
}
/**
*获取学生的分数
*/
public float getScore()
{
return score;
}
/**
*这个方法完成学生之间的比较
*/
public int compareTo(Object obj)
{
if(!(obj instanceof Student)) //判断这个对象是不是学生对象
throw new RuntimeException("这个对象不是学生");
Student s = (Student)obj;//进行类型转换
/**
*对分数进行比较,按分数对学生对象进行排序
*/
if(this.score>s.score)
return 1;
if(this.score==s.score)
{
return this.name.compareTo(s.name); //第二个判断条件,判断姓名是否相同
}
return -1;
}
} |
|