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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiahuiting 中级黑马   /  2013-9-27 09:39  /  1883 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jiahuiting 于 2013-9-27 10:14 编辑

当在treeset自定义比较时,或者implements  compareable然后复写它中的compareTo方法,或者implements  comparator然后复写它中的compare方法,发现在复写compare方法的时候也用到了compareTo方法,是不是compare方法的依据是compareTo呢,不知道这么理解对么

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 code_geass 于 2013-9-27 10:14 编辑

这两个接口没有什么联系,因为首先两个都是接口,没有继承和实现的关系,并且方法都是抽象的,没有实际的内容,完全靠子类的去实现。
你说的问题是comparator 进行属性比较时利用了compareTo对吧。的确,一些基本数据类型的对象,Integer,Short,Double,Character  String等一些对象是实现了Comparable接口的,因为这些对象本身就应该具备比较性,比如基本的自然顺序。所以你说的comparator依据 Comparable 是可以的,是有间接联系的。

compareable 覆盖compareTo()方法。让对象具备比较性
comparator   覆盖compare() 方法       根据我的规则排序


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
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)方法。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
compareTo是Compareable接口的一个方法,主要用于规定创建对象的大小关系,该对象要实现compareable接口, 当a.compareTo(b)>0时,则a>b, 当a.compareTo(b)<0时, a<b
compare方法是java.util中的Comparator接口的一个方法,compare方法内主要靠定义compareTo规定的对象大小关系来确定对象的大小。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马