本帖最后由 逝去的记忆ヽ 于 2012-6-17 20:03 编辑
部分代码和运行结果如下:
public int compareTo(Object obj)
{
if (!(obj instanceof Student))//比较接受的是不是学生类。
throw new RuntimeException("不是学生对象。");
Student s = (Student)obj;//进行强制转换 将接受的OBJ转化成student类
System.out.println(this.age+"--------"+s.age);//在这里我输出的是在TreeSet添加元素时,年龄进行比较。
if (this.age>s.age)
return 1;
if(this.age == s.age)
{
return this.name.compareTo(s.name);//在比较字符串时,String类也继承了comparable这个接口。
}
return -1;
}
}
class TreeSetDemo
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet();
ts.add(new Student("zhangsan",3));
ts.add(new Student("lisi",30));
ts.add(new Student("wangwu",27));
ts.add(new Student("zhaosi",25));
for(Iterator it = ts.iterator(); it.hasNext(); )
{
Student s = (Student)it.next();
System.out.println(s.getName()+"--------"+s.getAge());
}
}
运行结果是:
30--------3
27--------3
27--------30
25--------27
25--------3//那么在这里当年龄25进来的时候应该是和里面有的所有元素进行比较的吧?可是这里就和3进行了比较,30和,27都没有进行比较。这是为什么?我换了好几个数字都不行。求大神指教。
zhangsan-------3
zhaosi--------25
wangwu--------27
lisi--------30
|