关于收集框架

时间:2012-06-28 16:42:12

标签: java collections hashmap hashtable hashset

我对Java Collection对象有一些疑问......

  1. 当我们将对象添加到HashSetHashMap等集合时,内部存储的对象如何?
  2. 为什么Hashtable不允许null值?

2 个答案:

答案 0 :(得分:6)

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

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

  • 通常空键空值表示调用代码中的编程错误。在插入时拒绝这一点使得查找错误要比等待代码获取值和然后具有意外的空值更容易。

  • 如果您知道地图中的值不能为空,那么您不需要单独检查包含然后获取:您可以获取,如果结果为null,您知道密钥丢失了。

  • 在map实现中处理null键需要更多的工作。虽然空值有时有用,但空键几乎永远不会

答案 1 :(得分:0)

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

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