Questions tagged «hashtable»

编程中的哈希表是一个使用哈希函数将标识值(键)映射到其关联值的集合。


11
如何在JavaScript中进行关联数组/哈希
我需要使用JavaScript来存储一些统计信息,就像在C#中那样: Dictionary<string, int> statistics; statistics["Foo"] = 10; statistics["Goo"] = statistics["Goo"] + 1; statistics.Add("Zoo", 1); JavaScript中是否有Hashtable类似的东西Dictionary<TKey, TValue>? 如何以这种方式存储值?


14
哈希表如何工作?
我正在寻找有关哈希表如何工作的解释-用朴素的英语代表像我这样的简单人! 例如,我知道它需要键,计算哈希值(我正在寻找一种解释方式),然后执行某种模运算以求出它在存储值的数组中的位置,但是这就是我的知识所在。 谁能澄清这个过程? 编辑:我不是专门询问哈希码的计算方式,而是关于哈希表工作原理的一般概述。

10
.NET HashTable与字典-字典可以这么快吗?
我试图弄清楚何时以及为什么使用Dictionary或HashTable。我在这里做了一些搜索,发现人们谈论我完全同意的《词典》的一般优势,这导致装箱和拆箱的优势略有提高。 但是我也读过Dictionary并不会总是按插入对象的顺序返回对象,而是对其进行排序。像HashTable一样。据我了解,这导致HashTable在某些情况下会快得多。 我的问题是,这些情况可能是什么?我在上面的假设中错了吗?您可能会使用哪种情况来选择另一种情况(是的,最后一种情况有点模棱两可)。

12
将重复的密钥放入HashMap后会发生什么?
如果我多次将相同的键传递给HashMap的put方法,那么原始值会怎样?如果值重复出现该怎么办?我没有找到任何文档。 情况1:密钥的覆盖值 Map mymap = new HashMap(); mymap.put("1","one"); mymap.put("1","not one"); mymap.put("1","surely not one"); System.out.println(mymap.get("1")); 我们得到surely not one。 情况2:重复值 Map mymap = new HashMap(); mymap.put("1","one"); mymap.put("1","not one"); mymap.put("1","surely not one"); // The following line was added: mymap.put("1","one"); System.out.println(mymap.get("1")); 我们得到one。 但是其他值怎么办?我在向学生教授基础知识,有人问我这个问题。是Map等,其中最后一个值引用(但在内存中)水桶?
276 java  hashmap  hashtable 


15
字符串的良好哈希函数
我试图为字符串想出一个很好的哈希函数。我当时想对字符串中的前五个字符的unicode值进行汇总(假设它有五个,否则就在结尾处停止)是一个好主意。这是一个好主意,还是一个坏主意? 我正在用Java进行此操作,但是我无法想象这会带来很大的不同。
160 java  hash  hashtable  hashcode 

6
什么是实现__hash __()的正确和好方法?
什么是正确的好方法__hash__()? 我说的是一个返回哈希码的函数,然后该哈希码用于将对象插入哈希表(又名字典)。 当__hash__()返回一个整数并用于将对象“绑定”到哈希表中时,我假设返回的整数的值应均匀分配给公共数据(以最大程度地减少冲突)。获得这样的价值观是什么好习惯?碰撞是个问题吗?就我而言,我有一个小类,它充当一个容器类,其中包含一些整数,一些浮点数和一个字符串。

8
如何在哈希表和Trie(前缀树)之间进行选择?
因此,如果我必须在哈希表或前缀树之间进行选择,那么有哪些区分因素会导致我选择一个而不是另一个。从我自己的幼稚角度来看,似乎使用trie会有一些额外的开销,因为它没有存储为数组,但是就运行时间而言(假设最长的键是最长的英文单词),它实际上可以是O (1)(相对于上限)。也许最长的英语单词是50个字符? 一旦获得索引,哈希表将立即查找。但是,散列密钥以获取索引似乎很容易采取近50个步骤。 有人可以为此提供更丰富的见解吗?谢谢!

9
字符串的哈希函数
我正在使用C语言编写哈希表,并且正在测试字符串的哈希函数。 我尝试的第一个功能是添加ascii代码并使用模(%100),但是在第一次数据测试中我得到的结果很差:130个单词40次冲突。 最终的输入数据将包含8 000个单词(这是字典存储在文件中)。哈希表声明为int table [10000],其中包含单词在txt文件中的位置。 第一个问题是散列字符串的最佳算法是什么?以及如何确定哈希表的大小? 提前致谢 ! :-)


8
哈希表真的可以是O(1)吗?
哈希表可以实现O(1)似乎是常识,但是这对我来说从来没有任何意义。有人可以解释一下吗?这是两种情况: 答: 该值是一个小于哈希表大小的整数。因此,该值是其自己的哈希,因此没有哈希表。但是,如果有的话,它将是O(1),但效率仍然很低。 B. 您必须计算值的哈希值。在这种情况下,对于要查找的数据大小,顺序为O(n)。在您完成O(n)工作后,查找可能是O(1),但在我眼里仍然是O(n)。 而且,除非您拥有完美的哈希表或大型哈希表,否则每个存储桶中可能有几项。因此,无论如何它会演变成小的线性搜索。 我认为哈希表很棒,但除非得到理论上的支持,否则我不会获得O(1)的名称。 Wikipedia的有关哈希表的文章始终引用恒定的查找时间,并且完全忽略了哈希函数的成本。这真的是公平的措施吗? 编辑:总结一下我学到的东西: 从技术上讲,这是正确的,因为不需要散列函数使用键中的所有信息,因此可以是恒定时间,并且因为足够大的表可以使冲突降低到接近恒定时间。 在实践中确实如此,因为随着时间的推移,只要选择哈希函数和表大小以最大程度地减少冲突,就可以解决问题,尽管这通常意味着不使用恒定时间哈希函数。

8
元组(或数组)作为C#中的字典键
我正在尝试在C#中创建一个字典查找表。我需要将三元组的值解析为一个字符串。我尝试使用数组作为键,但是那没有用,而且我不知道该怎么办。在这一点上,我正在考虑制作“字典词典”,尽管我将使用javascript做到这一点,但看起来可能不太漂亮。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.