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

© danielchung6600 中级黑马   /  2016-6-21 23:10  /  573 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public int compareTo(Person o){    //按长度比较
  int length = this.name.length() - o.name.length();   //???????怎么得出int的
  int num = length == 0?this.name.compareTo(o.name):length; //这是比较名字的码表
  return num ==0? this.age - o.age:num;
}

这个返回值,正数负数0有什么意义?参数反给哪个调用者?调用者接到0正数负数会怎么样?  求缕缕

4 个回复

正序浏览
涟漪不起 来自手机 中级黑马 2016-6-22 09:03:20
报纸
这是内部的问题。不好理解。
先记着结果。
回复 使用道具 举报
爱逗猫的鱼 来自手机 初级黑马 2016-6-22 08:15:05
板凳
danielchung6600 发表于 2016-6-21 23:10
public int compareTo(Person o){    //按长度比较
  int length = this.name.length() - o.name.length() ...

你这个是treeset里面的吧,treeset底层依据的是二叉树,顶层会先有一个null值,然后第一元素存进来,然后之后的元素与顶层的元素对比,比顶层元素小的(按 return得到负数)放在左边,比顶层大的放在右边(这里按this.-o.就是从小到大;按o.-this.会从大到小),这里的顶层是每个树叉的顶端,不是指最顶层的数,因此,后面进来的数会比较多次,按照树叉找到自己的位置,最后按左中右的顺序对每个树叉进行打印。手打的可能解释不是很清楚,你按照视频上的图很好理解的
回复 使用道具 举报
在二叉树结构中,负数存左边,正数存右边,0相同不存
回复 使用道具 举报
正数按正序排列 负数按倒序排列
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马