黑马程序员技术交流社区
标题:
关于comparable和comparator问题。
[打印本页]
作者:
一碗小米周
时间:
2013-10-29 15:58
标题:
关于comparable和comparator问题。
本帖最后由 一碗小米周 于 2013-10-29 22:29 编辑
我想请问下各位,在treeset集合中,如果集合自身具有了比较器,而集合中的对象也实现了comparable接口,具有了比较性,那么这个程序中,到底是参考哪个呢?谢谢。
作者:
雨过丶天已晴
时间:
2013-10-29 18:31
这是根据Comparator的比较器的
帮助文档是这样写的:构造一个新的空 TreeSet,它根据指定比较器进行排序。
其实楼主也可以这样想,任何一个插入TreeSet集合的对象都必须实现Comparable接口,假设不是根据Comparator排序,而是根据Comparable排序
那单独给出一个Comparator的构造函数就没有什么意义了。所以,假设是不成立的,
作者:
阿里策
时间:
2013-10-29 19:31
这个首先要看你创建TreeSet集合对象时使用的是哪个构造函数了,如果使用 new TreeSet();空参数构造函数,将会按照实现的comparable接口中的方法compareTo进行排序。如果使用new TreeSet(Comparator<? super E> comparator);含有比较器参数的构造函数,那么将会优先使用比较器进行排序。也就是说,当二者都有时,将会按照比较器排序。看帮助文档:
TreeSet()
构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。
TreeSet(Comparator<? super E> comparator)
构造一个新的空 TreeSet,它根据指定比较器进行排序。
作者:
一碗小米周
时间:
2013-10-29 22:29
恩。刚突然看到了笔记。两种方式都存在时,一比较器为主。
作者:
To
时间:
2013-10-30 00:08
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2