为什么要添加 null
在 HashSet
不扔Exception
,但添加 null
在 TreeSet
抛出异常。
Set<String> s = new TreeSet<String>();
s.add(null);
抛出
NullPointerException
Set<String> s = new HashSet<String>();
允许
Null
要增加的值(value)。
最佳答案
因为一个TreeSet的底层数据结构是一个Red-Black tree ,这是一个二叉搜索树,因此是排序的。要对其进行排序,必须有一个 Comparator 来确定一个值是否等于、小于或大于另一个值。默认的 Comparator 不是空安全的,但是如果您编写自己的 Comparator 支持空值,则使用空值作为键没有问题。
关于java - 为什么HashSet加null不抛出异常,而TreeSet加null会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36785418/