黑马程序员技术交流社区
标题:
TreeSet集合类排序问题
[打印本页]
作者:
彭盼
时间:
2012-3-21 01:18
标题:
TreeSet集合类排序问题
本帖最后由 彭盼 于 2012-3-21 01:25 编辑
请看这段代码:
public int compareTo(Object obj)
{
if(!(obj instanceof Student))
throw new RuntimeException("!!!");
Student s = (Student)obj;
System.out.println(this.name+"....compareto....."+s.name);
if(this.age>s.age)
return 1;
if(this.age==s.age)
{
return this.name.compareTo(s.name);
}
return -1;
}
这个方法是某类实现Comparable接口,覆盖compareTo方法,用来对Hashset元素进行排序的,为什么方法返回1就能够使系统按年龄大小给对象排序,这其中的详细的机制是怎样的,哪位高手解释下
作者:
♂诸侯♂
时间:
2012-3-21 01:21
代码不全呀。
作者:
李深山
时间:
2012-3-21 01:23
compareTo
int compareTo(T o)比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
推荐 (x.compareTo(y)==0) == (x.equals(y)) 这种做法,但并不是 严格要求这样做。一般来说,任何实现 Comparable 接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals 不一致的自然排序。”
作者:
田斌
时间:
2012-3-21 01:53
compareTo是按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0
作者:
尹震
时间:
2012-3-21 10:23
public int comparaTo(Object obj);
该方法: 返回0表示this==obj
返回正数表示this>obj
返回负数表示this<obj
或者另一种写法:
int i = this.age-s.age;
return i==0 ? this.name.compareTo(s.name) : i
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2