Java300集零基础适合初学者视频教程
运行程序会抛出如下异常
Exception in thread "main" java.lang.ClassCastException: clc.Err cannot be cast to java.lang.Comparable at java.util.TreeMap.compare(TreeMap.java:1294) at java.util.TreeMap.put(TreeMap.java:538) at java.util.TreeSet.add(TreeSet.java:255) at clc.TestSets.main(TestSets.java:17)
将上面的Err类实现Comparable接口之后程序就能正常运行了
class Err implements Comparable{
@Override
public int compareTo(Object o) {
return 0;
}
}
还有个重要问题是,因为TreeSet会调用元素的compareTo方法,这就要求所有元素的类型都相同,否则也会发生异常。也就是说,TreeSet只允许存入同一类的元素。例如下面这个例子就会抛出类型转换异常
public static void main(String[] args) {
Set set = new TreeSet();
set.add(1);
set.add("2");
System.out.println(set);
}
运行结果
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Date at java.util.Date.compareTo(Date.java:131) at java.util.TreeMap.put(TreeMap.java:568) at java.util.TreeSet.add(TreeSet.java:255) at clc.TestSets.main(TestSets.java:19)



