HashMap
HashMap 의 핵심은 배열 + 연결리스트 구조를 사용하는것이다.
key 의 해싱
충돌해결
데이터 검색
재해싱
메서드
class DesignHashMap {
static class Node {
int key,val;
Node next;
Node(int key, int val) {
this.key = key;
this.val = val;
}
}
final Node[] nodes = new Node[1000000];
public void put(int key, int value) {
int index = key % nodes.length;
if (nodes[index] == null) {
nodes[index] = new Node(key, value);
return;
}
Node node = nodes[index];
while (node != null) {
if (node.key == key) {
node.val = value;
return;
}
if (node.next == null) {
break;
}
node = node.next;
}
node.next = new Node(key, value);
}
public int get(int key) {
int index = key % nodes.length;
if (nodes[index] == null) {
return -1;
}
Node node = nodes[index];
while (node != null) {
if (node.key == key) {
return node.val;
}
node = node.next;
}
return -1;
}
public void remove(int key) {
int index = key & nodes.length;
if (nodes[index] == null) {
return;
}
Node node = nodes[index];
if (node.key == key) {
if (node.next == null) {
nodes[index] = null;
} else {
nodes[index] = node.next;
}
}
Node prev = node;
while (node != null) {
if (node.key == key) {
prev.next = node.next;
return;
}
prev = node;
node = node.next;
}
}
}
static class Node {
int key,val;
Node next;
Node(int key, int val) {
this.key = key;
this.val = val;
}
}
key-value 쌍을 저장하고 동일한 해시 값을 가진 여러 항목을 연결하는 역할을 한다.
데이터 저장
데이터 검색
TreeNode