A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wkz_crystal 于 2015-3-17 12:37 编辑

只添加一个对象的实例进去哈:为什么都会报错,怎么会这样的呀……
  1. import java.util.*;
  2. //学生类
  3. class Student
  4. {
  5.         private String name;
  6.         private int age;

  7.         Student(String name,int age)
  8.         {
  9.                 this.name=name;
  10.                 this.age=age;
  11.         }

  12.         public String getName()
  13.         {
  14.                 return name;
  15.         }

  16.         public int getAge()
  17.         {
  18.                 return age;
  19.         }

  20. }

  21. class  TreeSetAddObject
  22. {
  23.         public static void main(String[] args)
  24.         {
  25.                 TreeSet ts=new TreeSet();
  26.                 ts.add(new Student("wangming",28));
  27.                 /*ts.add("bcd");
  28.                 ts.add("accd");
  29.                 ts.add("bdd");
  30.                 ts.add("bdd");
  31.                 ts.add("Acd");*/
  32.                 //这样执行都不能通过:直接抛出异常了……晕倒!
  33.                 //java.lang.ClassCastException: Student cannot be cast
  34.         }

  35.         public static void sop(Object obj)
  36.         {
  37.                 System.out.println(obj);
  38.         }
  39. }
复制代码

6 个回复

倒序浏览
你要保证数据唯一性:实现comparable接口覆盖compareTo方法
回复 使用道具 举报
还是没有弄明白,按理说:只加“一个实例化的对象进去”应该没有任何问题呀……不解呀……
回复 使用道具 举报
TreeSet集合里面元素要保证顺序啊,两种排序方式至少得有一种
回复 使用道具 举报
班凤飞 发表于 2015-3-20 21:10
TreeSet集合里面元素要保证顺序啊,两种排序方式至少得有一种

保证顺序?什么意思,能具体点吗?
回复 使用道具 举报
1.如果直接add("字符串")就可以,为什么?你看看人家String类都实现了Comparable接口了,你就照着做吧,不然的话TreeSet不知到对象的大小都不知把对象放哪好,当然会报错!
2.Student类的声明改为 class Student implements Comparable<Student>
3.Student类中覆写compareTo方法
  
  1. public int compareTo(Student o) {
  2.                         int temp = this.name.compareTo(o.name);
  3.                         return temp!=0?temp:this.age-o.age;
  4.                 }
复制代码

4.欧了。
回复 使用道具 举报
ankje 发表于 2015-3-20 22:34
1.如果直接add("字符串")就可以,为什么?你看看人家String类都实现了Comparable接口了,你就照着做吧,不 ...

哦,原来是这样呀,我太大意了,谢谢您!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马