본문 바로가기
JAVA BASE/Collection(컬렉션) - 자료구조

08. [자바] Hashing - 자료구조

by staticClass 2021. 1. 4.

다른 컬렉션이나 자료구조에 대해 더 알아보고 싶다면 아래의 링크로 들어오시라🤗

 

01. [자바] 컬렉션 프레임워크(Collections Framework)

컬렉션 프레임워크란? 다수의 데이터를 다루는 데 필요한 배열과 비슷하지만 더 성능이 뛰어난 많은 클래스들을 제공한다 크게 3가지 그룹이 있는데 List, Set, Map이다. 계층도와 같이 Map인터페이

staticclass.tistory.com

 

 

 


해싱과 해시함수

해싱은 해시함수로 데이터를 해시테이블에 저장하고 검색하는 기법을 말한다.
해시함수는 데이터의 저장 위치를 알려주기 대문에 데이터가 많아도 원하는 데이터를
빠르게 찾을 수 있다.
해싱을 구현한 컬렉션은 HashSet, HashMap, Hashtable등이 있다
Hashtable은 HashMap의 구버전으로 호환성 문제로 남겨둔 것이기 때문에 사용을 지양하자.

해싱의 구조

해싱에서 사용하는 자료구조는 배열과 LinkedList의 자료구조의 조합으로 되어있다.

배열은 크기가 커져도 원하는 요소가 몇 번째에 있는지만 알면 원하는 값을 빠르게 찾을 수 있고

링크드 리스트는 중간 데이터의 변경이 강하지만 데이터가 많아지면 느려지는게 단점이다.

이 두가지를 합쳐 강점을 뽑아낸게 Hashsing의 자료구조 라고 생각한다.

배열과 + 링크드리스트 = Hashing

 

 

1️⃣ 검색하려는 값의 키로 해시함수를 호출한다.
2️⃣ 해시함수의 계산결과(해시코드)로 해당 값이 저장되어 있는 링크드 리스트를 찾는다.
3️⃣ 링크드 리스트에서 검색한 키와 일치하는 데이터를 찾는다.

Hashsing의 데이터 찾는 과정

 

댓글