我有一些关于 JavaCollection
对象的问题......
- 当我们将对象添加到类似
HashSet
or的集合HashMap
中时,对象内部是如何存储的? - 为什么
Hashtable
不允许null
值?
我有一些关于 JavaCollection
对象的问题......
HashSet
or的集合HashMap
中时,对象内部是如何存储的?Hashtable
不允许null
值?您没有向集合中添加对象。您正在添加参考。
至于为什么HashTable
不允许null
键和值 - 这只是一个设计决定;在某些情况下,禁止空键很有帮助,而在其他情况下,这很烦人。HashMap
例如,确实允许空键和值。禁止空值有多种原因:
通常空键或空值表示调用代码中的编程错误。在插入点拒绝它比等到代码获取一个值然后有一个意外的空值更容易找到错误。
如果你知道map 中的值不能为 null,那么你不需要单独检查包含然后 fetch:你可以 fetch,如果结果为 null,你就知道 key 丢失了。
在映射实现中处理空键需要更多的工作。虽然空值有时很有用,但空键几乎从来没有用过。
Hashtable 不允许空值,因为它使用添加到其中的对象的 equals 和 hashcode 方法