java - 哈希表 - Java

标签 java oop data-structures hashtable

我要做作业,我需要在我选择的数据结构中存储大量信息(字典)。我听到我教室里的人说哈希表是可行的方法。怎么会?

最佳答案

优势

当您第一次听说哈希表时,它们听起来好得令人难以置信。原因是无论搜索多少项目,插入(有时删除)可能需要大约 0(1),这几乎是从用户 POV 即时发生的。鉴于其在速度方面的性能,哈希表主要但不限于需要在不到一秒的时间内查找数千项的程序(例如拼写检查器/搜索引擎)。从我的特殊观点来看,我发现 H 表比任何类型的二叉树都更容易编程,而且我不是专家,所以如果你是初学者,这可能也是一个优势。

缺点

由于哈希表是基于数组的,因此一旦创建它们就很难扩展。我还读到,对于某些哈希表,一旦充满或变得充满,执行任务时的速度会显着降低。由于这两种情况,在编程时,您需要相当准确地确定需要存储的项目数量。此外,无法按例如从最小到最大的顺序搜索哈希表中的项目,因此如果这是您正在寻找的东西,它可能不是您需要的。


额外信息

维基百科文章 - Hash Table - Big O Notation

哈希表教程 - Tutorial

关于哈希表的所有方法 - Java2S


读书建议

我建议你买一本名为“Java 中的数据结构和算法 - 第二版 - Robert Lafore”的书,这是一本大书,但它对所有内容的解释都非常微妙,对我来说是迄今为止唯一的编程书籍我可以像小说一样阅读。


关于大 O 表示法的附加信息 - O(1)

O(1) 并不意味着“几乎瞬时”(O(1) 算法可能需要数小时、数周或数年)。这意味着(在这种情况下)“与集合的大小无关”(假设哈希码足够好)。 – 本灵斯

感谢 Ben 的澄清。


P.S:您以后可能希望在提出问题时更具描述性,这样其他用户就可以确定您要查找的内容。

关于java - 哈希表 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2487590/

相关文章:

java - Tapestry Hook : start of rendering and end of rendering

java - ADF 皮肤样式加载错误的类

java - JSON Spring 框架 Android

java - 子类中的变量可见性

c++ - 为什么我的图书馆管理程序没有写入文件

c++ - Boost序列化树结构

java - 有效地存储和查询字符串列表

actionscript-3 - 如何正确扩展 AS3 Point 类?

java - 基于空间主体建模的数据结构

algorithm - 用于在多个条件下做出决策的数据结构