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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 和鹏 中级黑马   /  2015-4-13 14:18  /  397 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
TreeSet的两种排序方式。
需求:让学生按照姓名排序。
*/

import java.util.*;
class TreeSetTest2
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet(new MyComparator());
                Student stu1 = new Student("张静01",22);
                Student stu2 = new Student("张静06",16);
                Student stu3 = new Student("张静02",21);
                Student stu4 = new Student("张静07",23);
                Student stu5 = new Student("张静01",20);
                Student stu6 = new Student("张静10",20);
                ts.add(stu1);
                ts.add(stu2);
                ts.add(stu3);
                ts.add(stu4);
                ts.add(stu5);
                ts.add(stu6);
                for (Iterator it = ts.iterator();it.hasNext(); )
                {
                        Student stu = (Student)it.next();
                        System.out.println(stu.getName()+"*****"+stu.getAge());
                }
        }
}
/**
*Student类实现Comparable接口
*/
class Student implements Comparable
{
        private String name;
        private int age;
        Student(String name,int age)
        {
                this.name = name;
                this.age = age;
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
        /**
        *复写Comparable接口的compareTo方法,对年龄进行比较
        */
        public int compareTo(Object obj)
        {
                if (!(obj instanceof Student))
                {
                                throw new RuntimeException("存入的对象不是学生!");
                }
                Student s = (Student)obj;
                System.out.println(this.name+"***compareTo***"+s.name);
                if (this.age>s.age)
                {
                        return 1;
                }
                if (this.age==s.age)
                {
                        return this.name.compareTo(s.name);
                }
                return -1;
        }
}
/**
*创造一个比较器
*/
class MyComparator implements Comparator
{
        /**
        *复写compare方法
        */
        public int compare(Object o1,Object o2)
        {
                Student stu1 = (Student)o1;
                Student stu2 = (Student)o2;
                int num = stu1.getName().compareTo(stu2.getName());
                if(num==0)
                {
                        return new Integer(stu1.getAge()).compareTo(new Integer(stu2.getAge()));
                }

                return num;
        }

}

0 个回复

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