





package HashBuck;
import java.util.Arrays;
/**
* Created with IntelliJ IDEA.
* Description:
* User: czt20
* Date: 2026 -01-30
* Time: 16:17
*/
public class HashBuck {
static class Node {
public int val;
public int key;
public Node next;
public Node(int key, int val) {
this.key = key;
this.val = val;
}
}
public Node[] array = new Node[10];
public int usedsize;
public static final double DEFAULT_LOAD_FACTOR = 0.75f;
public void push(int key, int val) {
int index = key % array.length;
Node cur = array[index];
while (cur != null) {
if (cur.key == key) {
cur.val = val;
return;
}
cur = cur.next;
}
Node node = new Node(key, val);
node.next = array[index];
array[index] = node;
usedsize++;
if (loadFactor() >= DEFAULT_LOAD_FACTOR) {
//array = Arrays.copyOf(array, 2*array.length) (不能直接拷贝)!!!!!!!
Resize(key, val);
}
}
private double loadFactor() {
return usedsize * 1.0 / array.length;
}
private void Resize(int key, int val) {
Node[] newarray = new Node[2 * array.length];
for (int i = 0; i < array.length; i++) {
Node cur = array[i];
while (cur != null) {
int newindex = key / newarray.length;
Node curN = cur.next;
cur.next = newarray[newindex];
newarray[newindex] = cur;
cur = curN;
}
}
array = newarray;
}
public int getval(int key){
int index = key % array.length;
Node cur = array[index];
while (cur != null) {
if (cur.key == key) {
return cur.val;
}
cur = cur.next;
}
return -1;
}
}