자바 컬렉션 Map

기타 2016. 2. 13. 22:29

맵(Map)이란?

1) 맵(Map)은 key/value 형태를 가지는 자바 컬렉션이다. 컬렉션 프레임워크에 속하지만 List, Set과 다르게 Collection 인터페이스를 구현하지 않는다.


2) key는 고유하여야 한다. 만약 맵에서 같은 key를 사용하게 된다면 그 값은 덮어 씌워진다.

 

3) 대표적인 구현 클래스로는 HashMap, TreeMap 등이 있다.


HashMap

1) key 객체에 대한 hashCode() 메소드로 생성된 해시값을 사용하여 value를 저장하고 조회한다.


2) 순서를 보장하지 않는다. 입력순서를 보장받으려면 LinkedHashMap을 사용하면 된다.


3) HashMap은 멀티 쓰레드 환경에서 Thread Safe하지 않다. 이것이 HashTable과의 차이점이다.Thread Safe하지 않지만 모든면에서 HashTable보다 HashMap이 우위에 있다. HashTable은 1.1 이전의 레거시 코드를 위해서 유지가 될 뿐이지만 HashMap은 자바8에서도 계속 개선되고 있다. 만약 동기화가 필요하다면 synchronizedMap이나 ConcurrentHashMap 클래스를 이용하는 것이 좋다.


4) 저장방식

- HashMap에는 key/value 쌍을 나타내는 Entry<K, V>라는 내부 클래스가 있는데, HashMap 멤버변수로 Entry<K, V> 배열이 선언되어 있다. 이 배열에 key/value를 저장하게 된다.


- HashMap은 내부적으로 bucket을 사용하는데 bucket은 Map에 저장되는 element를 체계적으로 분산시켜 놓는 방법이라 할 수 있다. 해시값을 통해서 bucketIndex를 생성하고 Entry<K, V> 배열에 인덱스로 활용되어 값을 저장한다. bucket의 수는 load factor에 의해 결정된다.



- 다음은 HashMap put() 메소드의 일부이다.



※ 참고자료

https://en.wikipedia.org/wiki/Hash_table

- http://d2.naver.com/helloworld/831311

- http://iilii.egloos.com/4457500



'기타' 카테고리의 다른 글

자바 컬렉션 List  (0) 2016.02.13
버블정렬, 삽입정렬, 퀵정렬, 병합정렬  (0) 2016.02.04
Posted by SungHoon, Park
,