为什么在TypeError: unsupported operand type(s) for -: 'Date' and 'int'
中添加null
不会抛出HashSet
,但在Exception
中添加null
会抛出异常。
TreeSet
抛出Set<String> s = new TreeSet<String>();
s.add(null);
NullPointerException
允许添加Set<String> s = new HashSet<String>();
值。
答案 0 :(得分:5)
因为TreeSet的底层数据结构是Red-Black tree,它是一个二叉搜索树,因此被排序。要对其进行排序,必须有一个比较器来确定值是等于,低于还是大于另一个值。默认的Comparator不是空安全的,如果您编写自己的支持null的Comparator,那么将null用作键是没有问题的。
答案 1 :(得分:0)