为什么在HashSet中添加空不抛出异常,但在TreeSet中抛出异常增加空
问题描述:
为什么添加在HashSet
null
不会引发Exception
,但在TreeSet
抛出异常增加null
。为什么在HashSet中添加空不抛出异常,但在TreeSet中抛出异常增加空
Set<String> s = new TreeSet<String>();
s.add(null);
抛出NullPointerException
Set<String> s = new HashSet<String>();
允许添加Null
值。
答
由于TreeSet的基础数据结构是Red-Black tree,它是二叉搜索树,因此被排序。为了对它进行排序,必须有一个比较器来确定一个值是否等于,小于或大于另一个值。默认的比较器不是无效的,如果你编写自己的支持null的比较器,那么使用null作为一个键是没问题的。
感谢哥们......知道了 –