算法6-2:解决哈系冲突之独立链表
来源:互联网 发布:guy里guy气网络用语 编辑:程序博客网 时间:2024/05/21 09:44
独立链表是解决哈希冲突的一种办法。它的基本思想就是将哈希值相互冲突的几个对象放到一个链表中。
代码
public class HashST<Key, Value> { private static class Node { Object key; // 由于无法创建泛型数组,只能将对象设置为Object类 Object value; Node next; public Node(Object key, Object value, Node next) { this.key = key; this.value = value; this.next = next; } } private Node[] map; private static final int M = 97; public HashST() { map = new Node[M]; } public Value get(Key key) { int hash = hash(key); Node node = map[hash]; while(node != null) { if(key.equals(node.key)) { return (Value) node.value; } node = node.next; } // 没有找到 return null; } public void put(Key key, Value value) { int hash = hash(key); Node node = map[hash]; while(node != null) { if(key.equals(node.key)) { node.value = value; return; } } map[hash] = new Node(key, value, node); } private int hash(Key key) { return (key.hashCode() & 0x7fffffff) % M; }}
性能
性能和M有关,M就是链表的数量。如果M过大,那么内存中就会有很多空的链表,如果M太小,那么每条链表就会很长,造成性能变差。所以,M一般取N/5,N就是关键字的数量。
0 0
- 算法6-2:解决哈系冲突之独立链表
- 算法6-3:解决哈希冲突之线性探针
- 数据结构与算法之哈希冲突解决-链地址法与开放定址法对比
- 数据结构与算法学习之路:简单的哈希表实现(链地址法解决冲突)
- github之解决冲突
- git之解决冲突
- java解决hash算法冲突
- HashMap与冲突解决算法
- 哈希算法以及解决哈希冲突
- 算法学习 - HashTable开放地址法解决哈希冲突
- python数据结构与算法 29-2 冲突解决
- svn命令之冲突解决
- Git冲突解决之P4Merge
- 哈希解决冲突
- 哈希解决冲突
- 哈希冲突解决
- 哈希查找之链地址法解决冲突(代码封装实现)
- 哈希冲突解决之开放寻址法
- 《hadoop 权威指南》 学习笔记(2)Hadoop 分布式文件系统
- window 2012 VDI之 快速部署(基于会话)
- c++中const成员变量赋值问题
- LeetCode Longest Palindromic Substring
- android代码设置EditText只输入数字、字母
- 算法6-2:解决哈系冲突之独立链表
- Oracle异常处理
- 【排序算法】选择排序(C++实现)
- PL/SQL编程要点
- linux下交叉编译工具链的安装
- wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- [ACdream原创群赛(12)のBUAA选拔赛]E:签到
- Java 理论与实践: 正确使用 Volatile 变量
- BlueJ的code pad