TreeSet

Speculate 2012-12-19 02:36:16
/*
哪位神能告诉我为什么多打印了这个(lisi02...compareTo...lisi02)
以下是打印结果:
lisi02...compareTo...lisi02
lisi007...compareTo...lisi02
lisi09...compareTo...lisi02
lisi09...compareTo...lisi007
lisi01...compareTo...lisi007
lisi01...compareTo...lisi02
lisi09....19
lisi007....20
lisi02....22
lisi01....40
*/
import java.util.*;
class Student implements Comparable//该接口强制让学生具备比较性。
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
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 0;
return -1;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class TreeSetDemo
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet();

ts.add(new Student("lisi02",22));
ts.add(new Student("lisi007",20));
ts.add(new Student("lisi09",19));
ts.add(new Student("lisi01",40));
Iterator it = ts.iterator();
while(it.hasNext())
{
Student stu = (Student)it.next();
System.out.println(stu.getName()+"...."+stu.getAge());
}
}
}
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmyangym 2012-12-19
  • 打赏
  • 举报
回复
运行一下,只插入一条,也会输出比较。原因不明。
dracularking 2012-12-19
  • 打赏
  • 举报
回复
引用 2 楼 oSpeculate 的回复:
是这样子的,我是看到了打印过程,开始打印结果“多了”这个东西 lisi02...compareTo...lisi02
我也一直在看,TreeSet貌似会对首插入元素作自比较,目的不知道是什么,可能是验证compareTo与equals方法是否一致 之后的排序是二分插入排序
Speculate 2012-12-19
  • 打赏
  • 举报
回复
是这样子的,我是看到了打印过程,开始打印结果“多了”这个东西 lisi02...compareTo...lisi02
MiceRice 2012-12-19
  • 打赏
  • 举报
回复
这问题看得我好糊涂,你自己程序在compareTo()函数里面不是写了: System.out.println(this.name+"...compareTo..."+s.name); 这行代码的??

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧