java - 关于收集框架

原文 标签 java collections hashmap hashtable hashset

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


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

最佳答案

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

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


通常,空键或空值表示调用代码中的编程错误。与在代码获取值然后有意外的空值之前等待相比,在插入时拒绝该错误使查找错误要容易得多。
如果知道映射中的值不能为null,则无需对容纳进行单独检查,然后提取:可以提取,如果结果为null,则说明键丢失。
处理地图实现中的空键需要花费更多的工作。尽管空值有时可能有用,但是空键几乎永远不会有用。

相关文章:

c++ - hash_map是否自动对[C ++]排序?

java - 升级和比较

python - 可以像这样比较python中的计数器吗?

java - 为什么HashMap中有这么多的null映射?

java - Java的HashMap.get是否以任何方式修改地图?

java - 按值对HashMap或TreeMap排序[重复]

java - 序列化LinkedList <Object>的语法

java - 其余Web服务返回404

java - 在一个函数中使用JDBC将数据插入到多个表中

c# - 合并两个集合,但仅适用于具有匹配ID的对象