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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

SortedSet接口
     ------TreeSet实现类
   保证迭代器按照元素递增顺序遍历的集合,可以按照元素的自然顺序进行排序,或者按照创建有序集合时提供的 Comparator进行排序。
   什么是自然顺序?
         基本数据类型(包装类) 数值由小到大,引用数据类型 哈希值由小到大
         
   
   在JDK类库中,有一部分类实现了Comparable接口,如IntegerDoubleString等。Comparable接口有一个compareTo(Object o) 方法,它返回整数类型。
   对于表达式,如果返回值为0,表示xy相等,如果大于0,则表示x大于y,如果返回值小于0,则表示x小于y。      
   
TreeSet

                     根据其元素的自然顺序进行排序,调用对象的compareTo()方法比较集合中的元素
                                           1 插入该 set 的所有元素都必须实现 Comparable 接口
                                           2 所有这些元素都必须是可互相比较的(类型相同):对于 set 中的任意两个元素 e1 e2,执行 e1.compareTo(e2) 都不得抛出 ClassCastException
                                             如果用户试图将违反此约束的元素添加到 set(例如,用户试图将字符串元素添加到其元素为整数的 set 中),则 add 调用将抛出 ClassCastException
                                             如:
                                             //new String("10").compareTo(10);(在比较之前会进行类型转换)
                                             //Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

Comparable接口

                 public int compareTo(Object?o);
                 
                 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。  
                 
                 如果是自定义类并且没有实现此接口,无法通过该接口进行对象的比较。
                 
                 所以要使自己的类能够进行比较,那么实现该接口,并重写compareTo()方法,自定义定义对象比较规则
                 
Comparator接口
           public int compare(Object?o1, Object?o2) ;
                 比较用来排序的两个参数。随第一个参数小于、等于或大于第二个参数而分别返回负整数、零或正整数
           boolean equals(Object obj)  该方法可以不实现。
           适用于其他人写的类和自定义的类。
          
           比较Comparable接口和Comparator接口
                     Comparable,比较对象的本身(要将该对象放到排序的集合类的时候)
                     Comparator,其他人写的类和自定义的类,为其他类的比较制定比较规则(比较器)

评分

参与人数 2技术分 +2 收起 理由
曹睿翔 + 1
袁梦希 + 1 很给力!

查看全部评分

2 个回复

正序浏览
曹睿翔 发表于 2013-6-17 18:22
虽然整理比较乱,不过是好东西

呵呵,谢谢曹版主啊。。昨天面对不知如何搞技术分,今天疯狂的守了一天的论坛,技术分算是上10了,不容易啊 。。
回复 使用道具 举报
虽然整理比较乱,不过是好东西
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马