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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© loading……99.9 中级黑马   /  2013-10-15 23:21  /  1994 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 loading……99.9 于 2013-10-16 10:23 编辑

今天开JDK帮助文档说这个两个类存储元素是按那个自然顺序对应元素(键)进行排序,自然排序是什么意思,举个例子。如果我不想要他的默认的这个自然排序,我想要逆转顺序,能实现吗?如果能该怎么弄?

评分

参与人数 1黑马币 +3 收起 理由
周志龙 + 3

查看全部评分

3 个回复

倒序浏览
      我的理解,集合元素按照自然排序,是按照元素内容去查编码表,取出编码,比较编码大小,返回结果,例如元素“abc”与“acc”比较,那么前者小于后者。
     如果要按照程序员自定义比较的话,有2中方法:
1:让元素自身具备比较性,需要元素对象实现Comparable接口,覆盖compareTo方法。
2:让集合自身具备比较性,需要定义一个实现了Comparator接口的比较器,并覆盖compare方法,并将该类对象作为实际参数传递给TreeSet集合的构造函数。

评分

参与人数 1黑马币 +3 收起 理由
周志龙 + 3

查看全部评分

回复 使用道具 举报
自然排序就是对象所属的类自己具有的排序方式,有自然排序的类,都实现了Comparable接口,实现了compareTo方法。是相对于通过传递一个比较器而言的
回复 使用道具 举报
    1.自然排序的话,那么对象必须接口Comparable,那么对象就具有了可比性,可以作为TreeSet的元素或者是TreeMap的键或者值,这样就可以排序了。
    2.如果可以按照自己的意愿排序的话,那么就自定义比较器,定义一个类,继承Compartor接口,然后重写compara方法,
如果想逆序的话,那么就可以使用Connections工具类,然后利用reverseOrder()获得反向的比较器或者是reverseOrder(Comparator<T> cmp)方法,
然后把获得的逆向比较器传给集合或者是Collections的sort方法。

希望对你有帮助!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马