当前位置: 首页 > 面试题库 >

为什么Hashtable不使用空键?

翟高明
2023-03-14
问题内容

为什么Hashtable不带null钥匙?

另外,为什么HashMap允许null键?

使这两个类的键行为如此不同的目的是什么?


问题答案:

Hashtable
JavaDoc:

To successfully store and retrieve objects from a hashtable, the objects used 
as keys must implement the hashCode method and the equals method.

简而言之,由于null不是对象,因此无法调用.equals().hashCode()对其进行调用,因此Hashtable无法计算哈希值以将其用作键。

HashMap较新,并且具有更高级的功能,基本上只是对Hashtable功能的改进。这样,在HashMap创建时,它专门设计为将null值作为键来处理,并将它们作为特殊情况来处理。

具体来说,null在发出时,像这样处理用作键.get(key)

(key==null ? k==null : key.equals(k))


 类似资料:
  • 问题内容: 如JDK文档中所指定,Hashtable不允许空键或值。HashMap允许一个null键和任意数量的null值。为什么是这样? 问题答案: Hashtable是较老的类,通常不鼓励使用Hashtable。也许他们看到了对null键的需求,更重要的是对null值的需求,并将其添加到HashMap实现中。 HashMap是较新的,并且具有更高级的功能,这些基本上只是对Hashtable功能

  • 问题内容: 这不是一个关于之间的差异问题 和 。 我知道对象不能接受键或值条目的值,它是同步集合,并且使用的内存比少。 我想知道哪种情况更适合使用a 而不是a 。 问题答案: 这不是一个关于之间的差异问题和 好吧,真的。。。 我想知道哪种情况更适合使用a 而不是a 。 正是在您 想要 两者之间的差异时: 当您想在Java 1.1上运行时 当您希望每个操作都进行同步时(只要您从不迭代它,就可以得到一

  • 这是我有生以来第一次发现自己正在编写一个开源的Java API。希望能被列入许多其他项目。 对于日志记录,我(以及与我一起工作的人)一直使用JUL(java.util.logging),从来没有遇到过任何问题。然而,现在我需要更详细地了解我应该为我的API开发做些什么。我对此做了一些研究,我得到的信息让我更加困惑。因此有了这篇文章。 因为我是从七月来的,所以我对此有偏见。我对其余的知识不是那么多。

  • 我经常看到函数或方法返回Result 换句话说,这种返回不会返回任何内容或错误。为什么使用会导致这种情况,而不是一种选择?我认为这个选项更合适,因为在我们的示例中,它实际上不返回任何值或值——无或错误。

  • 问题内容: 我有Ubuntu 10.10和apache2,php 5.3.3-1和mysql 5.1。 我正在通过URL向页面传递一些值。在该页面上,如果我这样做了,那么我会看到数组的内容。但是,如果我这样做数组是空的。任何想法为什么会这样? 问题答案: 也可以尝试检查php.ini中的“ request_order” 选项:

  • 我的问题是无法使用和获取文本字段。我尝试使用XPath来选择对象,但没有成功。 这是我的代码: 我重新提出这个问题是因为旧的问题有点让人困惑,我想。这是旧的 XML形式的我的文档(Document.getXML()) 我需要选择文本字段,做一个邮件合并,我的计划将是复制和移动字段。如果有更好的方法,我愿意尝试一下:)