这是我的代码:
public static void main(String[] args){
TreeSet<Dog> d = new TreeSet<Dog>();
d.add(new Dog());
System.out.println(d.size());
}
class Dog{
}
Run Code Online (Sandbox Code Playgroud)
如您所见,Dog该类不是Comparable对象,我确定没有指定Comparator用于排序的类.这段代码如何在没有异常的情况下运行?它打印出来了1.
我尝试Dog在TreeSet中添加另一个,它ClassCastException按预期抛出一个.
编辑:我正在使用Java 6
Java 7中添加了一个更改来修复此问题.这是一个错误.
由于出现错误
java.util.TreeMap,以前可能会将无效的null元素和未实现的元素插入Comparable到空TreeMaps和TreeSets中.只有一个无效元素可以插入空TreeMaps或TreeSets中; 额外的元素会导致预期NullPointerException或ClassCastException.收集时的大多数其他操作也会失败.从JDK 7开始,插入无效的null元素或未实现的元素Comparable为空TreeMap或TreeSet抛出aNullPointerException.
(TreeSet与实施TreeMap作为其底层的数据结构).