- //导包
- import java.util.Iterator;
- import java.util.TreeSet;
- /**
- * 10、声明类Student,包含3个成员变量:name、age、score, 创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)。
- */
- public class Test10 {
- public static void main(String[] args) {
- // 创建TreeSet对象 scoreForm 成绩表
- TreeSet<Student> scoreForm = new TreeSet<>();
- // 创建5个对象装入TreeSet(考虑成绩相同的问题)
- scoreForm.add(new Student("小刚", 18, 88));
- scoreForm.add(new Student("小明", 18, 92));
- scoreForm.add(new Student("小强", 18, 95));
- scoreForm.add(new Student("小龙", 18, 92));
- scoreForm.add(new Student("小花", 18, 97));
- // Iterator接口,迭代器,对 collection 进行迭代的迭代器
- Iterator<Student> iter = scoreForm.iterator();
- // 循环输出,hasNext()如果仍有元素可以迭代,则返回 true
- while (iter.hasNext()) {
- // next() 返回迭代的下一个元素。
- Student student = (Student) iter.next();
- System.out.println("姓名:" + student.getName() + ",年龄:"
- + student.getAge() + ",成绩:" + student.getScore());
- }
- }
- }
- // 因为往TreeSet集合中存元素,TreeSet具有排序功能,但是需要元素自身具有比较性
- // 元素需要实现Comparable接口,覆盖CompareTo方法
- // 声明类Student
- class Student implements Comparable {
- private String name;
- private int age;
- private int score;
- // 构造函数,方便赋值
- Student(String name, int age, int score) {
- this.name = name;
- this.age = age;
- this.score = score;
- }
- // 覆盖compareTo方法
- public int compareTo(Object object) {
- // 需要判断传入的对象object是不是学生类,如果不是,直接输出"不是学生",用instanceof判断
- if (!(object instanceof Student))
- System.out.println("不是学生");
- // 将Object类强转为Student类(向下转型)
- Student student = (Student) object;
- if (this.score > student.score)
- return 1;
- if (this.score == student.score) {
- // 如果成绩相同的时候,要判断姓名(或者年龄也可以)是否相同
- return this.name.compareTo(student.name);
- }
- return -1;
- }
- public String getName() {
- return name;
- }
- public int getAge() {
- return age;
- }
- public int getScore() {
- return score;
- }
- }
复制代码 加了 在声明Student实现Compareable的那行还是有个小黄点啊 |