黑马程序员技术交流社区
标题:
compare与compareTo
[打印本页]
作者:
jiahuiting
时间:
2013-9-27 09:39
标题:
compare与compareTo
本帖最后由 jiahuiting 于 2013-9-27 10:14 编辑
当在treeset自定义比较时,或者implements compareable然后复写它中的compareTo方法,或者
implements comparator然后复写它中的compare方法,
发现在复写compare方法的时候也用到了compareTo方法,是不是compare方法的依据是compareTo呢,不知道这么理解对么
作者:
code_geass
时间:
2013-9-27 10:02
本帖最后由 code_geass 于 2013-9-27 10:14 编辑
这两个接口没有什么联系,因为首先两个都是接口,没有继承和实现的关系,并且方法都是抽象的,没有实际的内容,完全靠子类的去实现。
你说的问题是comparator 进行属性比较时利用了compareTo对吧。的确,一些基本数据类型的对象,Integer,Short,Double,Character String等一些对象是实现了Comparable接口的,因为这些对象本身就应该具备比较性,比如基本的自然顺序。所以你说的comparator依据 Comparable 是可以的,是有间接联系的。
compareable 覆盖compareTo()方法。让对象具备比较性
comparator 覆盖compare() 方法 根据我的规则排序
作者:
凝聚
时间:
2013-9-27 10:06
compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接口的,必须重写public int compareTo(T o)方法,比如MapReduce中Map函数和Reduce函数处理的 <key,value>,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>接口,实现这个接口可同时用于序列化和反序列化。WritableComparable<T>接口(用于序列化和反序列化)是Writable接口和Comparable<T>接口的组合; compare(Object o1,Object o2)方法是java.util.Comparator<T>接口的方法,它实际上用的是待比较对象的compareTo(Object o)方法。
作者:
欲困
时间:
2013-9-27 11:09
compareTo是Compareable接口的一个方法,主要用于规定创建对象的大小关系,该对象要实现compareable接口, 当a.compareTo(b)>0时,则a>b, 当a.compareTo(b)<0时, a<b
compare方法是java.util中的Comparator接口的一个方法,compare方法内主要靠定义compareTo规定的对象大小关系来确定对象的大小。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2