【发布时间】:2015-02-15 14:41:43
【问题描述】:
在任何 HashMap(或任何基于散列的数据结构)中的搜索都需要单个散列操作,即 O(1)。但是,当我们必须搜索 HashMaps 数组时,单个搜索将需要 O(n) 哈希操作,其中 n 是数组的大小。我想知道,由于数组是连续内存位置的集合,因此可能有一种有效的方法可以将 HashMap 数组中的搜索从 O(n) 减少到 O(1)。或者我们可以设计一些对象,它实际上具有数组的优势,并且需要单个哈希运算进行搜索。有什么建议吗???
考虑这种情况,您正在处理来自不同用户的元素,并且您希望根据用户配置文件(彼此分开)来保留它们。最节省内存的方法是使用 HashMap 数组将它们分开。
【问题讨论】:
-
为什么首先要有一个 HashMap 数组?
-
您采用了一种非常奇怪且有问题的数据结构,并询问是否有可能设计出更好的数据结构。是的,它已经完成了。首先停止使用奇怪和可疑的。 :-)
-
可能有不同的原因。例如,我必须在 HashMap 中维护元素。由于某些原因,当 HashMap 中的元素数量增加时,我创建了另一个 HashMap。我知道会创建多少个 HashMap,所以我创建了一个 HashMap 数组。同时我必须搜索一些元素,这就是为什么我需要 HashMap 数组
-
HashMap会自动扩展大小。当元素数量增加时,无需创建第二个。 -
不,最有效的方法是保留
n单独的hashmap 和一个整体hashmap,这样您就可以为想要执行的每种查询类型创建一个map。额外hashmap的开销只在结构中,不会复制任何用户数据。
标签: java arrays algorithm hash