본문 바로가기

computer/algorithm

해시테이블 구현 - 자바

※ 이 자료는 공부를 목적으로 출처에 기입한 여러 자료를 단순히 정리한 것입니다.

※ 출처에 기입한 채널의 코드를 복습하기 위해 재구현하였습니다.

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