당근개발자
당근당근
당근개발자
전체 방문자
오늘
어제
  • 분류 전체보기 (157)
    • codepresoo (13)
    • JAVA (1)
    • JS (12)
    • 코딩 테스트 (7)
    • Spring (21)
    • 자료구조 (4)
    • HTTP (7)
    • JSP (36)
    • Etc (21)
    • RESTful (11)
    • React (1)
    • k8s (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • @JsonFilter#당근개발자
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수강하고있는강의명
  • thymleaf#layout#fragment#thymleaf layout 적용안됌
  • queue#자료구조
  • Primitive#Wrapper
  • stack#자료구조
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online
  • HATEAOD
  • thymleaf error#template might not exist
  • S
  • dobule_linked_list#java
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기
  • #코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • 코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online.
  • 이

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
당근개발자

당근당근

자료구조

HashMap -chaning 기법

2022. 1. 7. 00:06

Hash 자료구조란 ?

Hash는 key의 값으로 value 값을 찾아내는 자료구조이다.

Hashtable은 값을 저장할 장소를 뜻하며,

각 값의 주소는 key 값을 해쉬화를 통해, 주소를 반환한다.

하지만 이러한 방법으로는 주소가 겹칠수도있기 때문에,

chaning 기법을 쓴다.

Hash + LinkedList라고 생각하면 쉽다.

동일한 주소값에  next 객체를 생성하여, 연속된 LinkedList를 생성하면된다.

 

 

 

public class MyHash {

    private Slot[] HashTable;

    public MyHash(Integer size) {
        this.HashTable = new Slot[size];
    }

    public class Slot {
        String key;
        String value;
        Slot next;

        public Slot(String key, String value) {
            this.key = key;
            this.value = value;
            this.next = null;
        }
    }

    public int hashFunc(String key) {
        return (int) key.charAt(0) % this.HashTable.length;
    }

    public boolean saveData(String key, String value) {

        Integer address = hashFunc(key);
        if (this.HashTable[address] != null) {
            if (this.HashTable[address].key == key) {
                this.HashTable[address].value = value;
            } else {
                Slot prevSlot = this.HashTable[address];
                Slot findSlot = this.HashTable[address];
                while (findSlot != null) {
                    prevSlot = findSlot;
                    findSlot = findSlot.next;
                }
                prevSlot.next = new Slot(key, value);
            }
        } else {
            this.HashTable[address] = new Slot(key, value);
        }
        return true;

    }

    public String getData(String key) {
        Integer address = hashFunc(key);

        if (this.HashTable[address] != null) {
            Slot slot = this.HashTable[address];
            while (slot != null) {
                if (slot.key == key) {
                    return slot.value;
                }
                slot = slot.next;
            }
            return null;
        }
        return null;
    }

'자료구조' 카테고리의 다른 글

Double Linked List (더블 링크드 리스트 )구현 - 자바  (0) 2022.01.05
Stack  (0) 2022.01.04
Queue  (0) 2022.01.04
    '자료구조' 카테고리의 다른 글
    • Double Linked List (더블 링크드 리스트 )구현 - 자바
    • Stack
    • Queue
    당근개발자
    당근개발자

    티스토리툴바