HashTable与阵列

时间:2016-10-31 22:36:14

标签: hashtable

我一直在使用Java,但总的来说,当我们有一个数组时,在哈希表中保存元素的优点是什么?

根据我的理解,如果我们有arr [100],那么访问第i个元素是O(1),因为它只是将(arr类型)*(i)添加到arr本身的基指针。那么散列表是如何有用的呢?什么时候它对数组有用呢?是

谢谢

1 个答案:

答案 0 :(得分:1)

在Java中你应该使用HashMaps。 Java中的Object类具有int hashcode方法,可以为该对象创建唯一编号。

For example, this is the hashcode of a String in java.

在散列图中,您可以为键指定值。例如,您可以这样做:<Username(String), Customer(Custom Object)>。对于数组,要找到一个特定的客户(如果你不知道索引),你必须在最坏的情况下通过整个数组(O(n))来找到它。 如果没有哈希映射,并使用一些搜索优化的数据结构(如二进制搜索树),则需要log(n)时间(O(log n))时间来查找客户。

使用hashmap,您可以立即获得客户的对象。无需经过整个客户群。

基本上,hashmaps&#34; Map&#34; a&#34;哈希&#34;键的整数值,然后使用该键查找值。

另外,作为奖励,请记住,因为我们将更大的信息放在一个小整数中,我们将面临所谓的&#34;哈希冲突&#34;其中两个键具有相同的哈希值,但它们并不是相同的实际内容。在这种情况下,我们显然不会立即找到信息,但是,我们只需要搜索更小的“#”桶,而不是必须搜索所有记录来查找我们的特定信息。价值远远小于我们的实际收藏品。

相关问题