/**
* 借鉴自HashMap源码
*/
class MyHashMap {
private int sizeOfTable = 1024;
private Node[] table = new Node[sizeOfTable];
private class Node {
public int key;
public int value;
public Node next;
public Node(int key, int value) {
this.key = key;
this.value = value;
}
}
public void put(int key, int value) {
int hash = Objects.hashCode(key);
int pos = hash & (sizeOfTable - 1);
Node p;
if ((p = table[pos]) == null) {
table[pos] = new Node(key, value);
} else if (p.key == key) {
p.value = value;
} else {
Node pre;
do {
pre = p;
p = p.next;
} while (p != null && p.key != key);
if (p == null) {
pre.next = new Node(key, value);
} else {
p.value = value;
}
}
}
public int get(int key) {
int hash = Objects.hashCode(key);
int pos = hash & (sizeOfTable - 1);
Node p = table[pos];
while (p != null && p.key != key) {
p = p.next;
}
return p == null ? -1 : p.value;
}
public void remove(int key) {
int hash = Objects.hashCode(key);
int pos = hash & (sizeOfTable - 1);
Node p = table[pos];
if (p == null) {
return;
}
if (p.key == key) {
table[pos] = p.next;
} else {
Node pre;
do {
pre = p;
p = p.next;
} while (p != null && p.key != key);
if (p != null) {
pre.next = p.next;
}
}
}
}
简单的HashMap实现
最新推荐文章于 2022-04-09 21:30:28 发布