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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 赵亚威 于 2013-3-23 12:18 编辑

Comparable是TreeSet集合中特有的特性嘛 其他集合可以用不

点评

记得及时处理帖子哦,继续追问,或将分类改成【已解决】,谢谢  发表于 2013-3-23 08:26

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
java.lang
接口 Comparable<T>
类型参数:
T - 可以与此对象进行比较的那些对象的类型
java.util
类 TreeSet<E>
java.lang.Object
  java.util.AbstractCollection<E>
      java.util.AbstractSet<E>
          java.util.TreeSet<E>
类型参数:
E - 此 set 维护的元素的类型
所有已实现的接口:
Serializable, Cloneable, Iterable<E>, Collection<E>, NavigableSet<E>, Set<E>, SortedSet<E>
上面上API查阅的:好像他俩没什么关系
但是存入TreeSet集合中的元素(对象)必须具有可比较性或让TreeSet具有可比较的方式(把比较器作为TreeSet的构造实参)
要使用元素(对象)具有比较性,那就得实现Comparable接口,根据元素实际需求情况复写CompareTo方法,
当TreeSet在存入元素(对象)时,就会调用该方法,并依据该方法的返回值来进行排序的,更详细可以查阅API

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
、Comparable接口需要重写一个方法,即public int compareTo(Object o){};
2、同Comparator一样,它们实际都是通过改写某种规则来实现对象之间的比较,如此题中自定义的DOG类,通过比较WEIGHT来实现其整个对象数组的排列,而调用的方法都是Arrays.sort(),但要注意二者使用该方法的参数并不相同,较之书本例子Comparable可能更形象一些。
3、对升序降序的改写分析:返回负值的排前,返回正值的排后,为了把this这个当前对象大时排前,小时插后(即实现降序),比较时显然该在this大时返回负值,this小时返回正值
TreeMap:它实现SortedMap 接口的基于红黑树的实现。此类保证了映射按照升序顺序排列关键字,根据使用的构造方法不同,可能会按照键的类的自然顺序 进行排序(参见 Comparable),或者按照创建时所提供的比较器进行排序。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
汗 你们说的我明白 问题是其他集合可以用不 你这是答不对题呀
回复 使用道具 举报
本帖最后由 谢洋 于 2013-3-22 16:38 编辑
赵亚威 发表于 2013-3-22 13:53
汗 你们说的我明白 问题是其他集合可以用不 你这是答不对题呀


上面说得那么明白,你又说自已明白,还问:其他集合可以用不?我想直接说能不能并不有助于你理解
回复 使用道具 举报
这个我知道 其实你也不敢说能不能用 只能给我说这些 如果你知道 就会说什么时候能用 什么时候不能用 或者不能 或者能
回复 使用道具 举报
无论是Comparable还是Comparator都是TreeSet集合特有的 而TreeSet底层是用的TreeMap集合 所以TreeMap也可以使用比较器  例如其他排序都是通过equals进行排序 HashMap还要先比较哈希值 不过其他集合还是可以使用的 通过工具类 可以使用自定义的比较器 equals自身就是自然排序 不过如果复写后就是按照自己定义的规则来排序了
这也可以叫做自定义规则排序
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马