当前位置:编程学习 > JAVA >>

TreeSet集合框架的问题;麻烦解答下;谢谢

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());
}

}
}

这是代码,编译后;存不上元素;求解答下。 --------------------编程问答-------------------- TreeSet要求其内容实现Comparable接口,你这个代码运行后会出现ClassCastException
因为TreeSet是一个Sorted set,排序的依据就是Comparable的compareTo方法 --------------------编程问答-------------------- 可是,我是存第一个东西,里面应该不需要实现Comparable接口吧? --------------------编程问答-------------------- 跟你存几个东西没关系。只要这个东西在TreeSet里面,它的前提条件就是实现Comparable接口。就像你去参加比赛,首先要入场券,即便其他选手都请病假,你也得要这张入场券才能入场 --------------------编程问答-------------------- 可是,我们老师都已经试过存一个对象。她在存》=2的对象才实现接口~ --------------------编程问答-------------------- TreeSet需要 Comparable接口或Comparator --------------------编程问答-------------------- 是不是你其他地方写错了,我用MyEclipse编译器运行,完全没有错误!!!! --------------------编程问答-------------------- 你用jdk什么版本?我没用过MyEclipse,不过我知道Eclipse有一个内置编译器。你用Jdk的编译器试试。
另外你就算一个元素不需要comparable,又有什么意义?
如果你想知道为什么,只能这么说,当TreeSet看到一个元素时,不会去转换成Comparable,当需要比较时才这么做。不过我这里不能证实这个猜想,你要问你老师是怎么做到的了 --------------------编程问答-------------------- 我这里1个元素不会出错,只有size>=2才会出现ClassCastException --------------------编程问答-------------------- 给SET的 加个范式 --------------------编程问答-------------------- 定义的学生类没有可比性,应该定义一个比较器 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,