유용한 팁

[JAVA]HashMap

프리월드 2012. 9. 5. 17:42

http://iilii.egloos.com/4457500


HashMap란? (Hap인터페이스의 한종류로써 Key와 Value 값으로 데이터를 저장하는 형태)


[참고]


1. Map인터페이스 key,value 를 매핑하는 객체로 List 형태의 조상

2. Map종류 : Hashtable, HasMap, LinkedHasMap, SortedMap, TreeMap



장점 : 


-해싱(hashing)이란 검색 방법을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보여줌.


1) 해싱 (Hashing)의 정의

- 해싱 함수 (Hashing Function)를 이용하여 레코드키에 대한 해시 테이블 (Hash Table) 내이 홈 주소  

   (Home Address)를 계산하여 주어진 레코드에 접근하는 방식이다. 

 

- 직접 접근 (Direct Access Method) 파일을 구성할 때 사용된다.

- 속도는 가장 빠르지만 충돌 현상시 오버플로 해결의 부담이 가중되며, 많은 기억 공간을 요구한다.


단점 : 


-데이터 양이 적더라도, 일정 크기의 burket을 가지고 있어야 하기 때문에, 리소스를 많이 사용하는 단점

-순서 보장하지 않음


주의 : 


-map에 데이터를 등록할 때, key값은 중복이 되지 않고, value값은 중복이 허용

-만약 중복된 key로 데이터를 삽입할 경우 해당되는 key의 데이터가 나중에 삽입된 데이터로 수정(Update)된다.


해싱(Hashing)이란?

- 레코드를 산술 연산에 의해 한 번에 바로 접근할 수 있는 기법

-  해시 함수(데이터의 저장, 위치 산출 방법)를 통해 탐색 키를 해시 테이블 주소로 변환


해싱을 사용하는 목적

알고리즘의 실행 시 소요되는 시간과 공간에 대해 적절한 균형을 제공

1)기억장소의 제한이 없을 경우 : 

키 값을 직접 기억장소의 주소로 사용하면 어떤 탐색이든지 한 번의 기억장소 접근으로 수행이 가능

2)시간에 제한이 없을 경우 :

최소한의 기억장소를 사용하여 데이터를 저장하고 순차 탐색을 수행


따라서, 해싱은 두 극단 사이(기억장소, 시간에 제한)에서 합리적인 균형을 이룰 수 있는 방법을 제공,

해싱을 사용하게 되면 가용한 기억장소를 효과적으로 사용하면서 빠르게 기억장소에 접근