0

我有一些关于 JavaCollection对象的问题......

  1. 当我们将对象添加到类似HashSetor的集合HashMap中时,对象内部是如何存储的?
  2. 为什么Hashtable不允许null值?
4

2 回答 2

6

您没有向集合中添加对象。您正在添加参考

至于为什么HashTable不允许null键和值 - 这只是一个设计决定;在某些情况下,禁止空键很有帮助,而在其他情况下,这很烦人。HashMap 例如,确实允许空键和值。禁止空值有多种原因:

  • 通常空键空值表示调用代码中的编程错误。在插入点拒绝它比等到代码获取一个值然后有一个意外的空值更容易找到错误。

  • 如果你知道map 中的值不能为 null,那么你不需要单独检查包含然后 fetch:你可以 fetch,如果结果为 null,你就知道 key 丢失了。

  • 在映射实现中处理空键需要更多的工作。虽然空值有时很有用,但空键几乎从来没有用过。

于 2012-06-28T16:44:25.250 回答
0

Hashtable 不允许空值,因为它使用添加到其中的对象的 equals 和 hashcode 方法

http://en.wikipedia.org/wiki/Hash_function

于 2012-06-28T16:44:00.287 回答