Hashtable 哈希表与数组

Hashtable 哈希表与数组,hashtable,Hashtable,我一直在使用Java,但总的来说,当我们有一个数组时,将元素保存在哈希表中有什么好处 在我的理解中,ff我们有arr[100],那么访问第i个元素是O(1),因为它只是(arr type)*(i)到arr本身的基指针的加法。那么哈希表是如何有用的,它什么时候会比数组有用呢?是 谢谢在Java中,您应该使用HashMaps。Java中的Object类有一个inthashcode方法,在该方法中,它为对象创建一个唯一的编号 在hashmaps中,可以为键指定值。例如,您可能正在执行:。对于数组,要

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

在我的理解中,ff我们有arr[100],那么访问第i个元素是O(1),因为它只是(arr type)*(i)到arr本身的基指针的加法。那么哈希表是如何有用的,它什么时候会比数组有用呢?是


谢谢

在Java中,您应该使用HashMaps。Java中的
Object
类有一个
inthashcode
方法,在该方法中,它为对象创建一个唯一的编号

在hashmaps中,可以为键指定值。例如,您可能正在执行:
。对于数组,要查找特定的客户(如果您不知道索引),您必须遍历整个数组(O(n)),在最坏的情况下才能找到该客户。 如果没有hashmaps,并且使用一些更优化的搜索数据结构(如二进制搜索树),则需要log(n)time(O(logn))time才能找到客户

使用hashmap,您可以立即获取客户的对象。而不必检查整个客户集合

所以基本上,hashmaps将一个hash整数值映射到一个键,然后使用该键查找该值


还有一个好处,请记住,由于我们将较大的信息放在一个小整数中,因此我们将面临所谓的“哈希冲突”,即两个键具有相同的哈希值,但它们不是相同的实际对象。在这种情况下,我们显然不会立即找到信息,但是,我们不需要搜索所有记录来找到我们的特定记录,我们只需要搜索一个较小的“桶”值,它大大小于我们的实际收集值。

也许你可以在