纯粹在数据结构中HashMap和HashTable之间的区别

Raj*_*lra 16 hash hashtable hashmap data-structures

是什么区别HashTableHashMap 纯粹(而不是Java或任何其他语言)数据结构的背景下.

我见过人们使用这些术语可以互换使用相同的概念.它纯粹在数据结构的上下文中完全没有区别!

Ton*_*roy 15

在计算科学术语中,映射是从键到值的关联容器映射.换句话说,您可以执行"for key K remember value V"等操作,然后执行"key K get value"操作.映射可以以多种方式实现 - 例如,使用(可选地平衡的)二叉树或散列表,或者甚至是存储键/值的连续结构数组.

散列表是用于存储任意数据的结构,并且该数据并不一定由一个单独的键和值的.例如,我可以有一个包含值{1,10,33,97}的哈希表,这将是它们自己的键.当没有与键不同的值时,这有时称为"set",并且哈希表实现为"哈希集".

因此,哈希表存储元素,每个元素不需要由不同的键和值组件组成,但如果它存在,那么它也是一个哈希映射.

  • 那么“hashmap”只是“哈希表”的一种特殊类型(具有不同的键和值)? (3认同)
  • @NickZuber:是的,没错-我最后一段的合理解释。干杯 (2认同)
  • 感谢您终于成为第一个清楚地解释哈希表和哈希图+1之间的区别的人 (2认同)
  • @TonyDelroy 我明白,在发表该评论后不久,我将集合作为数据结构进行研究,并且同样对它们的使用感到困惑。为什么要有一个数据结构,为了访问一个元素,您需要已经拥有相同的元素。但这确实是在问:该元素在这个集合中吗?我发现这有时很有用。真正困扰我的并不是数据结构的哈希部分,而是集合的一般功能。现在我明白了,这完全有道理。哈希表是集合的具体实现。 (2认同)

cry*_*bhu 5

我的理解是这样的:
哈希表:我们在计算机科学中所说的概念
哈希图:在Java中所说的
哈希集(HashSet):我们只关心唯一键的情况(或者你可以将其视为我们忽略值的哈希表,我们只想知道唯一键的集合是什么)

或者简单地说,
哈希表 (CS) = HashMap (Java) = 字典 (Python)
哈希集 (CS) = HashSet (Java) = Set (Python)