※ 이 자료는 공부를 목적으로 출처에 기입한 여러 자료를 단순히 정리한 것입니다.
※ 출처에 기입한 채널의 코드를 복습하기 위해 재구현하였습니다.
import java.util.LinkedList;
class hashTable {
class Node{
String key;
String value;
public Node(String key, String value) {
this.key = key;
this.value = value;
}
String getValue() {
return value;
}
void setValue(String value) {
this.value = value;
}
}
LinkedList<Node>[] data;
hashTable(int size) {
this.data = new LinkedList[size];
}
int getHashCode(String key) {
int hashCode = 0;
for(char c : key.toCharArray()) {
hashCode += c;
}
return hashCode;
}
int convertToIndex(int hashcode) {
return hashcode % data.length;
}
Node searchKey(LinkedList<Node> list, String key) {
if (list == null) return null;
for (Node node : list) {
if (node.key.equals(key)) {
return node;
}
}
return null;
}
void put(String key, String value) {
int hashcode = getHashCode(key);
int index = convertToIndex(hashcode);
LinkedList<Node> list = data[index];
if (list == null) {
list = new LinkedList<Node>();
data[index] = list;
}
Node node = searchKey(list, key);
if (node == null) {
list.addLast(new Node(key, value));
} else {
node.setValue(value);
}
}
String get(String key) {
int hashcode = getHashCode(key);
int index = convertToIndex(hashcode);
LinkedList<Node> list = data[index];
Node node = searchKey(list, key);
return node == null? "not found" : node.getValue();
}
}
public class Test {
public static void main (String[] args){
hashTable h = new hashTable(3);
h.put("park", "isn't she lovely?");
h.put("jin", "isn't he wonderful?");
h.put("ddalgi", "what a cuty puppy");
h.put("dalrae", "more beautiful puppy");
System.out.println(h.get("park"));
System.out.println(h.get("jin"));
System.out.println(h.get("ddalgi"));
System.out.println(h.get("dalrae"));
}
}
출처 :
[자료구조 알고리즘] 해쉬테이블(Hash Table)에 대해 알아보고 구현하기 엔지니어대한민국, Youtube
'computer > algorithm' 카테고리의 다른 글
P NP 문제 (0) | 2021.08.16 |
---|---|
해시테이블 구현 - 파이썬 (2) | 2020.08.10 |
해시테이블 개념 (0) | 2020.08.07 |
Python 리스트의 편리함 (0) | 2020.02.13 |
Counting sort(계수 정렬) (0) | 2018.08.30 |