本帖最后由 天凌蓝 于 2014-3-4 13:13 编辑
我发现JDK1.7的TreeSet好像有点问题,不知道是不是真的。我试了好几次,程序运行老是异常。
我用一个对象放进TreeSet里面,还会报这个异常Exception in thread "main" java.lang.ClassCastException: Student cannot be cast to java.lang.Comparable
而且实现了Comparable接口后运行结果还有点问题,请各位大神帮我看一下,谢谢了
- import java.util.*;
- class TreeSetDemo2
- {
- public static void main(String[] args)
- {
- TreeSet ts=new TreeSet();
-
- ts.add(new Student("lisi02",22));
- //ts.add(new Student("lisi07",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();
- sop(stu.getName()+"..."+stu.getAge());
- }
- /*
- for(Iterator it=ts.iterator();it.hasNext();)
- {
- Student stu=(Student)it.next();
- sop(stu.getName()+"..."+stu.getAge());
- }*/
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
- 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;
- }
- }
复制代码 单个ts.add(new Student("lisi02",22)); 运行时,不实现接口会发生异常,而且实现接口后发现会跟自己比较。多个的也会跟自己比较一次。
|
-
单个.jpg
(9.54 KB, 下载次数: 22)
单个的
-
多个.jpg
(19.77 KB, 下载次数: 21)
多个的
|