Sah*_*hal 13 java hashtable hashmap
我知道有一种散列技术应用于一个键,用于将其值存储在内存地址中.
但是我不明白碰撞是怎么发生的?Java使用哪种哈希算法来创建内存空间?是MD5吗?
Pet*_*ček 31
基本思路HashMap是这样的:
HashMap实际上是一组包含Key和Value的特殊对象.hashCode()每个对象具有的方法提供.因此,当您编写新内容时Class,您应该注意正确hashCode()和equals()方法实现.默认值(Object类的)将内存指针作为数字.但这对我们想要使用的大多数类都不好.例如,String该类使用一种算法,该算法从字符串中的所有字符生成哈希 - 想象如下hashCode = 1.char + 2.char + 3.char...:(简化).因此,两个相等的字符串,即使它们位于存储器中的不同位置,也具有相同的字符串hashCode().hashCode(),比如说"132",那么如果我们有一个很大的数组,那么应该存储对象的存储桶数量.但我们没有,我们的只有16桶.因此,我们使用明显的计算'hashcode % array.length = bucket'或'132 mod 16 = 4'将Key-Value对存储在4号桶中.HashMap,所以你想告诉你Maps如果你以前知道它将使用多少桶.在这种情况下,
mod 256指向阵列中的四个不同的槽.现在,如果您试图查找Sandra Dee的电话号码,您可以将她的名字哈希,将其修改为256,并查看存储桶152.在那里您可以找到John Smith.那不是桑德拉,再往前看......啊哈,桑德拉在约翰之后被束缚住了.
| 归档时间: |
|
| 查看次数: |
22506 次 |
| 最近记录: |