Java:可以将1个非Comparable对象添加到TreeSet中吗?

mpm*_*pmp 0 java set ocpjp

这是我的代码:

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

Sot*_*lis 5

Java 7中添加了一个更改来修复此问题.这是一个错误.

由于出现错误java.util.TreeMap,以前可能会将无效的null元素和未实现的元素插入Comparable 到空TreeMaps和TreeSets中.只有一个无效元素可以插入空TreeMaps或TreeSets中; 额外的元素会导致预期NullPointerExceptionClassCastException.收集时的大多数其他操作也会失败.从JDK 7开始,插入无效的null元素或未实现的元素 Comparable为空TreeMapTreeSet抛出a NullPointerException.

(TreeSet与实施TreeMap作为其底层的数据结构).