자바의 자료구조(2)-Map

June Lee·2021년 3월 29일
0

Java

목록 보기
16/23

자바의 자료구조 중 Map은 여러 종류로 구현되어 있다. 그 중 가장 많이 쓰이는 것이 바로 HashMapTreeMap이다.

HashMap

우선 이전 자료구조 포스팅에서 Map은 key-value 쌍으로 데이터를 저장하는 자료구조라고 이야기했다. Map에 데이터를 넣을 때는 put(), Map에서 데이터를 꺼낼 때는 get(), 삭제할 때는 remove() 메서드를 이용한다.

그리고 Map의 요소는 key만 가져오거나, value만 가져오거나 key-value 쌍으로 가져올 수 있다.

Set set = map.entrySet(); // key, value 쌍으로 가져옴
Set set = map.keySet(); // key만 가져옴
Collection<String> values = map.values(); // value만 가져옴

이때 주의할 점은 entrySet()과 keySet() 메서드는 Set을 반환하지만, values()메서드는 Collection을 반환한다는 점이다. 이렇게 받아온 요소들의 집합은 for문 혹은 iterator를 통해서 하나씩 가져와서 사용할 수 있다.


TreeMap

그런데, HashMap에는 데이터의 순서가 없다. key-value 쌍을 key를 기준으로 정렬해야할 필요가 있을 경우 유용하게 사용할 수 있는 것이 TreeMap 클래스이다.

숫자 < 알파벳 대문자 < 알파벳 소문자 < 한글 (오름차순)

TreeMap 클래스는 key 값을 기준으로 데이터를 정렬해주기 때문에, 이와 관련된 메서드가 여러가지 있다.
그 예시로는 firstKey(), lastKey(), higherKey(), lowerKey()가 있다. higherKey는 인자로 넣어준 key보다 한 칸 뒤에 있는 key를 리턴해준다.


HashTable

한편, 멀티 쓰레드 프로그램에서 사용되는 Map 자료구조로 HashTable이 있다.

HashMap과 HashTable의 차이점

  1. HashTable은 키나 값에 null 값 저장이 불가능하다.
  2. HashTable은 Thread safe하다. (즉 동기화를 지원한다)

그러나 Java5부터는 HashMap에서도 Synchronization을 지원하는 ConcurrentHashMap이 있고, 속도적인 측면에서도 HashMap이 좀 더 빠르다.

profile
📝 dev wiki

0개의 댓글