梳理下HashMap的原理。
1 HashCode
hash是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,散列值往往远小于输入的空间,不同的输入散列值可能相同。
Hash算法主要有除余法,乘余取整法,平方取中法等。
HashCode为了提高查询效率,应用主要有HashTable,HashMap等。
2 HashMap
Java语言最基本的结构是数组和引用,所有的数据结构都可以用数组和引用来构造。HashMap便是数组和链表的完美结合。
2.1 链表
1 | // 链表 |
2.2 数组
1 | // 数组 |
2.3 hash 方法
1 | static final int hash(Object key) { |
2.4 put 方法
1 | public V put(K key, V value) { |
本文作者:
Jeff.R
本文链接: https://stefanxiepj.github.io/archives/a937ccd8.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://stefanxiepj.github.io/archives/a937ccd8.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)