import java.util.*;
class Student {
private int id;
private String name;
Student(int id,String name){
this.id=id;
this.name=name;
} public int getId(){
return id;
}}class TreeSet3
{
public static void main(String args[]){

TreeSet tr=new TreeSet();
tr.add(new Student(123,"小张"));
Iterator aa=tr.iterator();
while (aa.hasNext())
{
Student bb=(Student)aa.next();
System.out.println(bb.getId());
}

}
}这是代码,编译后;存不上元素;求解答下。

解决方案 »

  1.   

    TreeSet要求其内容实现Comparable接口,你这个代码运行后会出现ClassCastException
    因为TreeSet是一个Sorted set,排序的依据就是Comparable的compareTo方法
      

  2.   

    可是,我是存第一个东西,里面应该不需要实现Comparable接口吧?
      

  3.   

    跟你存几个东西没关系。只要这个东西在TreeSet里面,它的前提条件就是实现Comparable接口。就像你去参加比赛,首先要入场券,即便其他选手都请病假,你也得要这张入场券才能入场
      

  4.   

    TreeSet需要 Comparable接口或Comparator
      

  5.   

    是不是你其他地方写错了,我用MyEclipse编译器运行,完全没有错误!!!!
      

  6.   

    你用jdk什么版本?我没用过MyEclipse,不过我知道Eclipse有一个内置编译器。你用Jdk的编译器试试。
    另外你就算一个元素不需要comparable,又有什么意义?
    如果你想知道为什么,只能这么说,当TreeSet看到一个元素时,不会去转换成Comparable,当需要比较时才这么做。不过我这里不能证实这个猜想,你要问你老师是怎么做到的了
      

  7.   

    我这里1个元素不会出错,只有size>=2才会出现ClassCastException