黑马程序员技术交流社区

标题: 关于集合的问题 [打印本页]

作者: HM张健    时间: 2013-3-21 09:46
标题: 关于集合的问题
本帖最后由 HM张健 于 2013-3-21 19:34 编辑

求讲解一下TreeSet的自然排序和定制排序啊 最好精简点啊


作者: 郝强勇    时间: 2013-3-21 09:57
    这个跟现实社会是一样的,模拟一个场景,作为一个人,人本身具备的关于比较的特性就是自然顺序,比如你有同他人比较年龄,比较身高,比较存款的功能,这些都是对象自身具备的,别人没办法约束你,但当你进入一个特定的环境的时候,由于这个环境是别人的,别人就有可能按照这个环境定义的方式进行排序,一般情况在银行下存款越多等级越高,但是这个银行就很另类,就是存款越少等级越高,没办法,在人家地盘就得听人家的规则,这个规则(定制排序规则)就是银行定义的Compator实例对象。
作者: 牛合超    时间: 2013-3-21 11:15
TreeSet的自然排序,也就是默认排序,是元素本身具有比较性。用的时候实现Comparable接口,并覆盖compareTo(Object obj)方法

定制排序,是在元素本身没有比较性,或不符合当前我们比较的需求下使用,也就是让集合自身有比较性。用的时候实现Comparator接口,并覆盖compare方法。

具体应用可参考毕大师视频,集合框架,讲的很详细。
作者: 赵鸿富    时间: 2013-3-21 11:39
1、自然排序
TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。
2、定制排序

TreeSet的自然排序是根据集合元素的大小,TreeSet将他们以升序排列。如果需要实现定制排序,例如降序,则可以使用Comparator接口。该接口里包含一个int compare(T o1,T o2)方法,该方法用于比较o1和o2的大小。


作者: 陈丽莉    时间: 2013-3-21 15:12
记得及时处理帖子哦,继续追问,或将分类改成【已解决】~
作者: HM张健    时间: 2013-3-21 19:34
OK  谢谢上面各位啊




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