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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hzhzhen 中级黑马   /  2015-5-23 10:55  /  690 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当要对TreeSet中添加的元素排序时,要声明一个类实现Comparator接口,实现compare方法,该方法说返回值大于0就是第一个参数大于第二个参数,小于0就是第一个参数小于第二个参数,等于0就相等。对这个返回值和排序关系没弄明白,我看别人程序就是两个Object对象中的变量做减法,不理解减法结果与排序关系,希望大家帮忙解解惑,主要是compare的返回值与排序关系,怎么看是升序还是降序

3 个回复

倒序浏览
qian0217wei 来自手机 高级黑马 2015-5-23 12:11:49
沙发
其实原理是一样的,大于0表明比较数比被比较数大,如果o1.compareTo(o2)结果大于0表明o1比o2大,如果把o1和o2顺序颠倒返回的是小于0则是倒序,你说的返回两数相减是在比较值为0时重新比较次条件时用到的,这样做比判断要简单,(一般数值比较),字符串本身有比较方法,直接返回比较值即可!联系你多看看视频,这节不算难
回复 使用道具 举报
TreeSet集合底层是二叉树,把毕老师画的二叉树图多看看。
回复 使用道具 举报
因为TreeSet默认的排序方式是从小到大的,而小与大的排列就在于其compareTo方法,而不在于数字的本身,当重写compareTo方法的时候,只要通过 你写的规则得到的是负数,那么,新加入的数就排列在这个数之前,否则就排列在之后,其核心就在于怎么个比较法,用哪些东西来比较。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马