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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闪亮未来 高级黑马   /  2015-4-20 22:22  /  621 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;

  2. class Student
  3. {
  4.         private String name;
  5.         private int age;
  6.         Student(String name,int age)
  7.         {
  8.                 this.name=name;
  9.                 this.age=age;
  10.         }
  11.         public String getName()
  12.         {
  13.                 return name;
  14.         }
  15.         public int getAge()
  16.         {
  17.                 return age;
  18.         }

  19. }

  20. class test
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 TreeSet ts=new TreeSet();
  25.                 ts.add(new Student("lisi06",23));
  26.                
  27.                 Iterator it=ts.iterator();
  28.                 while (it.hasNext())
  29.                 {
  30.                         Student stu=(Student)it.next();
  31.                         System.out.println(stu.getName()+"........"+stu.getAge());
  32.                 }
  33.         }
  34. }
复制代码

不是说TreeSet存入一个学生类的话就不需要比较,运行就不会报错吗,我跟老师一样的代码,为什么老师的能运行,我存一个学生类还是会报Student cannot be cast to java.lang.Comparable

8 个回复

正序浏览
闪亮未来 发表于 2015-4-20 23:52
还是不懂,毕老师的没报错,能运行,为什么我们的报错

我仔细对比过了,是一模一样的代码,但是当Student不具备比较性的时候,毕老师的JVM报错内容比我们的JVM少了一条。。。
这让我怀疑是不是JVM的问题。。。。。
回复 使用道具 举报
itheima_llt 发表于 2015-4-20 23:44
因为TreeSet
        at java.util.TreeMap.compare(TreeMap.java:1188)
你注意看一下,我们的JVM报错比毕 ...

还是不懂,毕老师的没报错,能运行,为什么我们的报错

点评

我也纠结了,我仔细看了,毕老师存2个的时候,报错也只报3行,没有报我复制的这一行! 换成HashSet就可以只存一个! 问问版主或者技术管理员吧!  发表于 2015-4-20 23:56
回复 使用道具 举报
提的好,我也遇到了。求解
回复 使用道具 举报
因为TreeSet
        at java.util.TreeMap.compare(TreeMap.java:1188)
你注意看一下,我们的JVM报错比毕老师的多了一行
回复 使用道具 举报
调试下,看看
回复 使用道具 举报
itheima_llt 发表于 2015-4-20 22:43
谢谢楼主,真是太好了

谢我干嘛,我只是来提问题的
回复 使用道具 举报
谢谢楼主,真是太好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马