我正在使用Google Maps API,觉得除了大量的switch
语句之外,还有一种更好的方法来搜索全景图像。我认为使用外部哈希表会更有效,更容易维护。每个图像都有一个唯一的panoid
,我可以定义它。阅读哈希表,我相信我的说法是正确的,我可以做一个表和完善的函数,以获得我需要的数据,在恒定的时间。有没有一个很好的资源如何构建这个?我对哈希一点经验都没有。
我的逻辑是这样的:每个图像都以sometext_panoid.jpg
的形式保存在一个目录中,其中sometext
是一个字符串,panoid
是我想要的任何内容。在初始化前面提到的switch语句中的数据时,所有的切换都是根据panoID完成的,并且在那里访问其他元数据。例如:
switch(panoID) {
case "test1":
links.push({
description : "TEST2",
pano : "test2",
heading : 70
});
break;
case "test2":
links.push({
description : "TEST1",
pano : "test1",
heading : 125
});
links.push({
description : "TEST3",
pano : "test3",
heading : 0
});
break;
case "test3":
links.push({
description : "TEST2",
pano : "test2",
heading : 0
});
break;
}
由于我将知道所有的panoid
,并且在生成表后不需要排序、添加或更改任何内容,所以我觉得有一种方法可以生成一个完美的散列,但不知道从哪里开始。有什么提示吗?谢谢是提前一堆了
实际上,简单的普通对象及其属性被实现为下面的哈希表。因此,不需要阅读哈希算法,您可以让您的JS引擎完成这项工作:
var table = {
"test1": [
{
description : "TEST2",
pano : "test2",
heading : 70
}
],
"test2": [
{
description : "TEST1",
pano : "test1",
heading : 125
},
{
description : "TEST3",
pano : "test3",
heading : 0
}
],
"test3": [
{
description : "TEST2",
pano : "test2",
heading : 0
}
]
};
var itemstobepushed = table[panoID];
[].push.apply(links, itemstobepushed);
问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加
keys 一个包含哈希表中查找到的键的序列。 请注意,并不是所有的哈希表都支持这个 (询问程序员一个指定的哈希表是否允许这么操作)。 <#assign h = {"name":"mouse", "price":50}> <#assign keys = h?keys> <#list keys as key>${key} = ${h[key]}; </#list> 将会输出: name = mouse
哈希表 通过最简单的取模运算作为哈希算法 class HashNode(object): def __init__(self, id, data): self.id = id self.data = data self.next = None def __str__(self): return '(%d,%s)' %
REDIS_HASH (哈希表)是 HSET 、 HLEN 等命令的操作对象, 它使用 REDIS_ENCODING_ZIPLIST 和 REDIS_ENCODING_HT 两种编码方式: 字典编码的哈希表 当哈希表使用字典编码时, 程序将哈希表的键(key)保存为字典的键, 将哈希表的值(value)保存为字典的值。 哈希表所使用的字典的键和值都是字符串对象。 下图展示了一个包含三个键值对的哈希
Hashtbl 模块 Hashtbl模块实现了一个高效的,可变的查询表。如下创建一个哈希表: # let my_hash = Hashtbl.create 123456;; val my_hash : ('_weak1, '_weak2) Hashtbl.t = <abstr> 这个123456是哈希表的初始大小。这个值可以是你对数据量的一种猜测,但是哈希表有可能会 随着数据量的增多而变大,因此
1. HashMap概述 HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. 四个关注点在HashMap上的答案 关注点 结论 HashMap是否允许空 Key和Val