黑马程序员技术交流社区
标题:
TreeMap和TreeSet自然排序的疑问
[打印本页]
作者:
loading……99.9
时间:
2013-10-15 23:21
标题:
TreeMap和TreeSet自然排序的疑问
本帖最后由 loading……99.9 于 2013-10-16 10:23 编辑
今天开JDK帮助文档说这个两个类存储元素是按那个自然顺序对应元素(键)进行排序,自然排序是什么意思,举个例子。如果我不想要他的默认的这个自然排序,我想要逆转顺序,能实现吗?如果能该怎么弄?
作者:
HM李超
时间:
2013-10-16 00:02
我的理解,集合元素按照自然排序,是按照元素内容去查编码表,取出编码,比较编码大小,返回结果,例如元素“abc”与“acc”比较,那么前者小于后者。
如果要按照程序员自定义比较的话,有2中方法:
1:让元素自身具备比较性,需要元素对象实现Comparable接口,覆盖compareTo方法。
2:让集合自身具备比较性,需要定义一个实现了Comparator接口的比较器,并覆盖compare方法,并将该类对象作为实际参数传递给TreeSet集合的构造函数。
作者:
murder_fol
时间:
2013-10-16 00:11
自然排序就是对象所属的类自己具有的排序方式,有自然排序的类,都实现了Comparable接口,实现了compareTo方法。是相对于通过传递一个比较器而言的
作者:
杨增坤
时间:
2013-10-16 09:21
1.自然排序的话,那么对象必须接口Comparable,那么对象就具有了可比性,可以作为TreeSet的元素或者是TreeMap的键或者值,这样就可以排序了。
2.如果可以按照自己的意愿排序的话,那么就自定义比较器,定义一个类,继承Compartor接口,然后重写compara方法,
如果想逆序的话,那么就可以使用Connections工具类,然后利用
reverseOrder
()获得反向的比较器或者是
reverseOrder
(
Comparator
<T> cmp)方法,
然后把获得的逆向比较器传给集合或者是Collections的sort方法。
希望对你有帮助!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2