/**
* @author 曹见朋
* @create 2024-09-20-8:17
*/
public class MyHashMap {
private static class Node {
private Integer key;
private Integer value;
Node(Integer key, Integer value) {
this.key = key;
this.value = value;
}
}
private Integer capacity; // 容量
private Integer size; // 元素个数
private LinkedList<Node>[] table; // 桶数组
private static final Integer DEFAULT_CAPACITY = 16;
public MyHashMap() {
this.capacity = DEFAULT_CAPACITY;
this.size = 0;
this.table = new LinkedList[DEFAULT_CAPACITY];
}
public MyHashMap(Integer capacity) {
this.capacity = capacity;
this.size = 0;
this.table = new LinkedList[capacity];
}
private Integer getIndex(Integer key) {
return (capacity - 1) & ((key.hashCode() ^ (key.hashCode() >>> 16)));
}
public void put(Integer key, Integer value) {
int index = getIndex(key);
if (table[index] == null) {
table[index] = new LinkedList<>();
}
for (Node node : table[index]) {
if (node.key.equals(key)) {
node.value = value;
return;
}
}
table[index].addLast(new Node(key, value));
size++;
}
public Integer get(Integer key) {
int index = getIndex(key);
if (table[index] == null) {
throw new RuntimeException("元素不存在");
}
for (Node node : table[index]) {
if (node.key.equals(key)) {
return node.value;
}
}
return null;
}
public void remove(Integer key){
int index = getIndex(key);
if(table[index] == null){
throw new RuntimeException("素不存在");
}
for(Node node : table[index]) {
if (node.key.equals(key)) {
table[index].remove(node);
size--;
}
}
}
public Integer size(){
return size;
}
}
手写一个简单的HashMap
最新推荐文章于 2024-10-17 11:21:39 发布