黑马程序员技术交流社区

标题: 集合hashset问题 [打印本页]

作者: danielchung6600    时间: 2016-6-21 23:10
标题: 集合hashset问题
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正数负数会怎么样?  求缕缕

作者: 159269236    时间: 2016-6-22 00:15
正数按正序排列 负数按倒序排列
作者: yuanjun52306    时间: 2016-6-22 02:18
在二叉树结构中,负数存左边,正数存右边,0相同不存
作者: 爱逗猫的鱼    时间: 2016-6-22 08:15
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.会从大到小),这里的顶层是每个树叉的顶端,不是指最顶层的数,因此,后面进来的数会比较多次,按照树叉找到自己的位置,最后按左中右的顺序对每个树叉进行打印。手打的可能解释不是很清楚,你按照视频上的图很好理解的
作者: 涟漪不起    时间: 2016-6-22 09:03
这是内部的问题。不好理解。
先记着结果。




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