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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© BJing 中级黑马   /  2016-4-28 20:04  /  480 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                                TreeSet排序的第一种方式:让元素自身具备比较性
                                元素需要实现Comparable接口,覆盖compareTo方法
                                这种方式也称为元素的自然顺序,或者叫做默认顺序

                                TreeSet的第二种排序方式
                                当元素自身不具备比较性时,或者具备的比较性不是所需要的
                                这时就需要让集合自身具备比较性
                                在集合初始化时,就有了比较性

5 个回复

倒序浏览
第一种排序能举一个例子吗,这一块我还不太懂。就是要自己写compareto方法得这类
回复 使用道具 举报
很清晰,很不错
回复 使用道具 举报
lll456123l 发表于 2016-4-28 20:07
第一种排序能举一个例子吗,这一块我还不太懂。就是要自己写compareto方法得这类 ...


import java.util.*;

class  TreeSetDemo
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("stu01",22));
                ts.add(new Student("stui02",23));
                ts.add(new Student("stu03",20));
                ts.add(new Student("stu04",21));
                ts.add(new Student("stu05",21));
                ts.add(new Student("stu05",21));//被视为重复元素,不能写入

                Iterator it = ts.iterator();
                while(it.hasNext()){

                        Student stu = (Student)it.next();
                        System.out.println(stu.getName()+"..."+stu.getAge());
                }
        }
}

class Student implements Comparable{//该接口强制让学生具备比较性
        private String name;
        private int age;

        Student(String name,int age){
                this.name = name;
                this.age = age;
        }

        public int compareTo(Object obj){

                if(!(obj instanceof Student))
                        throw new RuntimeException("不是学生对象");
                Student s = (Student)obj;

                System.out.println(this.name+"..comparTo.."+s.name);

                if(this.age>s.age)
                        return 1;
                if(this.age==s.age)
                        return this.name.compareTo(s.name);
                return -1;
        }

        public String getName(){
                return name;
        }
        public int getAge(){
                return age;
        }
}
回复 使用道具 举报
compareto  只能比较对象吗
回复 使用道具 举报
lll456123l 发表于 2016-4-29 13:58
compareto  只能比较对象吗

这里比较的是字符串
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马