黑马程序员技术交流社区

标题: 个人整理的一些集合排序重点,希望能帮到需要的人 [打印本页]

作者: 聂_疯    时间: 2013-6-17 14:57
标题: 个人整理的一些集合排序重点,希望能帮到需要的人
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,其他人写的类和自定义的类,为其他类的比较制定比较规则(比较器)


作者: 曹睿翔    时间: 2013-6-17 18:22
虽然整理比较乱,不过是好东西
作者: 聂_疯    时间: 2013-6-17 18:27
曹睿翔 发表于 2013-6-17 18:22
虽然整理比较乱,不过是好东西

呵呵,谢谢曹版主啊。。昨天面对不知如何搞技术分,今天疯狂的守了一天的论坛,技术分算是上10了,不容易啊 。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2