Hash Table

su dong·2023년 5월 14일
0

자료구조

목록 보기
1/2

개념

  • 키, value를 대응시켜 저장하는 데이터 구조
  • 키를 통해 해당 데이터에 빠르게 접근 가능
  • 해싱: 키를 특정 계산식에 넣어 나온 결과를 사용하여 값에 접근하는 과정

해시충돌

개념

해시 테이블의 같은 공간에 서로 다른 값을 저장하려는 경우 - 서로 다른 키의 해시 함수를 통한 해시 값이 동일한 경우

해결방안

1) 개방 주소법

  • 충돌 시, 테이블에서 비어 있는 공간에 hash를 찾아 데이터를 저장
  • Hash 와 value가 1:1 관계 유지 가능

1-1) 선형탐사법

  • 빈공간을 순차적으로 탐사
  • 일차 군집화 문제 발생

1-2) 제곱탐사법

  • 빈 공간을 n제곱만큼의 간격을 두고 탐사하는 방법
  • 일차 군집화 문제 해결, 하지만 2차 군집화 문제 발생

1-3)이중해싱(더블해싱)

  • 최초 해시를 구할 때 사용
  • 충돌 발생 시, 탐사 이동 간격을 구할 때 사용

2) 분리 연결법

  • 연결리스트로 구성, 해당 테이블에 데이터 연결
  • 1:1 관계가 아님 -> 찾는데 시간이 오래걸릴 수 있다.

사용방법

정의

Hashtable<String, Integer> ht = new Hashtable();
ht.put("key1", 10);
ht.put("key2", 20);
ht.put("key3", 30);
ht.put("key3", 50);

 for (Map.Entry<String, Integer> item : ht.entrySet()) {
            System.out.println(item.getKey()+" - "+item.getValue());
        }
profile
매일매일 성장하는 백엔드 엔지니어 박지수입니다.

0개의 댓글