A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
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;
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马