본문 바로가기
Language/java

[Java] 컬렉션 프레임윅 (HastMap과 Hashtable)

by gamxong 2022. 7. 27.

Map의 특징

: 키(key)와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다는 특징

: 해싱을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능

 

HashMap

: HashMap은 키와 값을 각각 Object타입으로 저장한다. 즉 (Object, Object)의 형태로 저장하기 때문에 어떤한 객체도 저장할 수 있지만 키는 주로 String을 대문자 또는 소문자로 통일해서 사용하곤 한다.

키(key) 컬렉션 내의 키(key)중에서 유일해야 한다.
값(value) 키와 달리 데이터의 중복을 허용한다.

 

★ HashMap은 데이터를 키와 값을 모두 Object타입으로 저장하기 때문에

     HashMap의 값(value)으로 HashMap을 다시 저장할 수 있다.

    ▶ 하나의 키에 다시 복수의 데이터를 저장할 수 있다

 

 

해싱이란?

: 해시함수를 이용해서 데이터를 해시테이블에 저장하고 검색하느느 기법을 말한다.

: 해시함수는 데이터가 저장되어 있는 곳을 알려 주기 때문에 다량의 데이터 중에서도 원하는 데이터를 빠르게 찾을 수 있음

 

해시함수 과정

1. 검색하고자 하는 값의 키로 해시함수를 호출한다.

2. 해시함수의 계산결과(해시코드)로 해당 값이 저장되어 있는 링크드 리스트를 찾는다.

3. 링크드 리스트에서 검색한 키와 일치하는 데이터를 찾는다.

 

배열의 인덱스가 n인 요소의 주소 = 배열의 시작주소 + type의 size * n

 

★ 해싱을 구현하는 과정에서 제일 중요한 것은 해시함수의 알고리즘이다.

 

※ equals()로 비교한 결과가 false이고 해시코드가 같은 경우는 같은 링크드 리스트(서랍)에 저장된 서로 다른 두 데이터가 된다.

댓글