public class Entry<k, v> {
int capacity;
Node[] no;
public Entry(int n) {
capacity = n;
no = new Node[n];
}
//链表类
class Node<k, v> {
k key;
v value;
Node<k, v> next;
public Node() {
}
Node(k key, v value, Node<k, v> next) {
this.key = key;
this.value = value;
this.next = next;
}
}
//计算hash值
int hashcode(k key) {
return (key.hashCode() & 0x7ffffff) % capacity;
}
public void put(k key, v value) {
int h = hashcode(key);
for (Node<k, v> n = no[h]; n != null; n = n.next) {
if (key.equals(n.key)) {
n.value = value;
return;
}
}
Node<k, v> old = no[h];
no[h] = new Node(key, value, old);
}
public v get(k key) {
int h = hashcode(key);
if (no[h] == null) {
return null;
}
for (Node<k, v> n = no[h]; n != null; n = n.next) {
if (key.equals(n.key)) {
return n.value;
}
}
return null;
}
}
简单HashTable(链表解决冲突)
哈希表实现
最新推荐文章于 2023-06-28 22:26:39 发布
本文介绍了一个简单的哈希表实现方式,使用链地址法解决冲突。包括哈希表的基本结构定义、节点类定义、哈希函数设计及put和get操作的具体实现。
961

被折叠的 条评论
为什么被折叠?



