黑马程序员技术交流社区

标题: JAVA TreeSet排序问题 [打印本页]

作者: hzhzhen    时间: 2015-5-23 10:55
标题: JAVA TreeSet排序问题
当要对TreeSet中添加的元素排序时,要声明一个类实现Comparator接口,实现compare方法,该方法说返回值大于0就是第一个参数大于第二个参数,小于0就是第一个参数小于第二个参数,等于0就相等。对这个返回值和排序关系没弄明白,我看别人程序就是两个Object对象中的变量做减法,不理解减法结果与排序关系,希望大家帮忙解解惑,主要是compare的返回值与排序关系,怎么看是升序还是降序
作者: qian0217wei    时间: 2015-5-23 12:11
其实原理是一样的,大于0表明比较数比被比较数大,如果o1.compareTo(o2)结果大于0表明o1比o2大,如果把o1和o2顺序颠倒返回的是小于0则是倒序,你说的返回两数相减是在比较值为0时重新比较次条件时用到的,这样做比判断要简单,(一般数值比较),字符串本身有比较方法,直接返回比较值即可!联系你多看看视频,这节不算难
作者: 途中ms前进    时间: 2015-5-23 12:34
TreeSet集合底层是二叉树,把毕老师画的二叉树图多看看。
作者: mmakun    时间: 2015-5-23 13:06
因为TreeSet默认的排序方式是从小到大的,而小与大的排列就在于其compareTo方法,而不在于数字的本身,当重写compareTo方法的时候,只要通过 你写的规则得到的是负数,那么,新加入的数就排列在这个数之前,否则就排列在之后,其核心就在于怎么个比较法,用哪些东西来比较。




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