在Java中,为什么在某些集合实现中允许null而在其他集合中不允许?

AKS*_*AKS 2 java collections

在Java中,通常,一些集合实现允许null元素,而有些则不允许.它与垃圾收集有关吗?

Chr*_*heD 5

从广义上讲,我认为基本上由实现决定是否null可以是集合的有效元素("逻辑上").我真的怀疑它有更多,虽然我可能被证明是错的.

文档中的相关位:

某些集合实现对它们可能包含的元素有限制.例如,某些实现禁止null元素,并且一些实现对其元素的类型有限制.尝试添加不合格的元素会引发未经检查的异常,通常是NullPointerException或ClassCastException.试图查询不合格元素的存在可能会引发异常,或者它可能只是返回false; 一些实现将展示前一种行为,一些将展示后者.更一般地,尝试对不合格的元素进行操作,其完成不会导致将不合格的元素插入到集合中,可以在实现的选择中抛出异常或者它可以成功.此类异常在此接口的规范中标记为"可选".