相关疑难解决方法(0)

理解奇怪的Java哈希函数

以下是哈希函数的源代码java.util.HashMap.评论很好地解释了它的成就.但怎么样?什么是^>>>运营商在做什么?有人可以解释代码实际上如何评论所说的内容吗?

/**
 * Applies a supplemental hash function to a given hashCode, which
 * defends against poor quality hash functions.  This is critical
 * because HashMap uses power-of-two length hash tables, that
 * otherwise encounter collisions for hashCodes that do not differ
 * in lower bits. Note: Null keys always map to hash 0, thus index 0.
 */
static int hash(int h) {
    // This function ensures …
Run Code Online (Sandbox Code Playgroud)

java hash

33
推荐指数
3
解决办法
7243
查看次数

Java HashMap实现中hash()方法的技巧是什么?

可能重复:
了解奇怪的Java哈希函数

static int hash(int h) {   
    // This function ensures that hashCodes that differ only by   
    // constant multiples at each bit position have a bounded   
    // number of collisions (approximately 8 at default load factor).   
    h ^= (h >>> 20) ^ (h >>> 12);   
    return h ^ (h >>> 7) ^ (h >>> 4);   
} 
Run Code Online (Sandbox Code Playgroud)

我不太了解这种实现的算法原理.我可以参考的任何解释或任何资源?谢谢 !

UPDATE

谢谢大家的答案和资源.实际上我理解哈希是如何工作的,但不是知道这个代码将如何确保a bounded number of collisions,正如评论所说.有理论上的验证吗?

java hash hashmap

18
推荐指数
2
解决办法
1762
查看次数

如何在java中使用linkedlist或array在内部实现hashmap

hashmap内部如何实现?我在某处读到它使用链表,而在某些地方它被称为数组.

我尝试研究hashset的代码并找到了入口数组,然后使用了linkslist

java

12
推荐指数
3
解决办法
2万
查看次数

Java语言中使用的散列函数

我知道Java对HashMaps或HashTables有很好的内置支持.

有没有人知道Java语言使用了什么样的哈希函数或技术?

是否可以调整这些功能,以便能够使它们更加特定于某个应用程序,从而提高性能并缩短访问时间?

非常感谢阅读!

java oop hash function

4
推荐指数
1
解决办法
9469
查看次数

更快的哈希函数

我正在尝试实现自己的哈希函数,我使用java将每个字符串的ASCII编号相加.我通过查找哈希表大小和总和来找到哈希码.大小%之和.我想知道在搜索字符串时是否有办法使用相同的进程但减少了冲突?

提前致谢.

java hashtable

0
推荐指数
2
解决办法
1496
查看次数

散列算法和HashMap

stackoverflow和web中有几个主题,我无法理解它们.我在尼克拉斯的堆栈流程中找到了这个答案,他的代表性让我对这个主题有了一些有意义的见解.

一些ASCII艺术

key.hashCode()
     |
     | 32-bit value
     |                          hash table
     V                        +------------+    +----------------------+
HashMap.hash() ----+          | reference  | -> | key1 | value1 | null |
                   |          |------------|    +----------------------+
                   |          | null       |
                   | offset   |------------|    +---------------------+
                   +--------> | reference  | -> | key1 | value1 | ref |
                              |------------|    +---------------------+
                              |    ....    |                       |
                                                  +----------------+
                                                  V
                                                +----------------------+
                                                | key2 | value2 | null |
                                                +----------------------+
Run Code Online (Sandbox Code Playgroud)

Java使用什么散列函数来实现Hashtable类?

Map aMap = new HashMap();
aMap.put(key,value);
Run Code Online (Sandbox Code Playgroud)
  1. 任何人都可以解释一下'什么是抵消及其价值?偏移值在哪里被映射?
  2. 什么是哈希表?它是一个对象数组吗?如果是这样,每个对象都有一个键,值1和参考符号?

任何人都可以一步一步地重新解释上面的图表.我无法理解HashMap背后的Hashing机制.

java hash hashmap

0
推荐指数
1
解决办法
1188
查看次数

标签 统计

java ×6

hash ×4

hashmap ×2

function ×1

hashtable ×1

oop ×1