JAVA의 가장 기본이 되는 내용

컬렉션 프레임워크 - Map

cwchoiit 2024. 5. 16. 16:08
728x90
반응형
SMALL

참고자료:

 

김영한의 실전 자바 - 중급 2편 | 김영한 - 인프런

김영한 | 자바 제네릭과 컬렉션 프레임워크를 실무 중심으로 깊이있게 학습합니다. 자료 구조에 대한 기본기도 함께 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전

www.inflearn.com

 

Map

Map키-값 쌍을 저장하는 자료구조이다. 여기서 특징이 있다.

  • ``는 맵 내에서 유일해야 한다. 그리고 키를 통해 값을 빠르게 검색할 수 있다.
  • ``는 중복될 수 없지만 ``은 중복될 수 있다.
  • Map은 순서를 유지하지 않는다.

 

키는 맵 내에서 유일하다는 것은 중복이 불가능하단 얘기고 이 말이 꼭 Set과 유사하다. 맞다. Map의 키는 Set으로 이루어져 있다. 그래서 Map의 모든 키 목록을 조회하는 keySet()을 호출하면 중복을 허용하지 않는 자료 구조인 Set을 반환한다.

Set<String> keySet = yourMap.keySet();

 

그리고 Map의 구현체는 대표적으로 HashMap, LinkedHashMap, TreeMap이 있다. "어? 이거도 어디서 많이 봤는데요?" 맞다. Set을 만들때 봐왔다. 사실 자바에서 HashSetHashMap을 가져다가 사용한다. 그래서 Map은 직접 구현해 볼 필요가 없다. 이미 Set을 하면서 해봤다.

 

그리고 ``은 중복이 될 수 있는데 순서를 유지하지 않는다고 한다는 것은 SetList도 아니란 얘기다. Set은 중복이 불가능하고 List는 순서를 유지하니까. 그래서 Map의 모든 값을 조회하는 values()를 호출하면 단순히 값의 모음이라는 의미의 상위 인터페이스인 Collection으로 반환한다.

 

그래서 Map에서 중요한건 Map은 ``가 중복이 불가능한 유일한 값만이 들어있다는 얘기다. 그리고 맵 역시 해시 알고리즘을 사용하는데 그 말은 Map에서 키로 사용하는 객체는 반드시 equals()hashCode()를 재정의해야 한다는 것이다. 

 

HashMapHashSet과 마찬가지로 순서를 보장하지 않는다.

LinkedHashMapLinkedHashSet과 마찬가지로 순서를 보장해준다.

TreeMapTreeSet과 마찬가지로 데이터의 정렬 기준으로 순서를 가진다.

 

728x90
반응형
LIST