Map
키-값의 쌍을 저장하는 자료구조
키는 맵 내에서 유일해야한다. 키를 통해 값을 빠르게 검색 가능
키는 중복될 수 없지만, 값은 중복될 수 있다
Map은 순서를 유지하지 않는다.
자바는 HashMap, TreeMap, LinkedHashMap등 구현체를 제공함
Map은 Set과 거의 비슷하다 다만 옆에 value가 딸려있느냐 없느냐의 차이다
HashSet - HashMap
LinkedHashSet - LinkedHashMap
TreeSet - TreeMap
다 비슷하고 해시셋은 해시맵의 구현을 가져다 사용함 Map에서 value만 비우면 셋으로 사용가능
메서드 설명
| put(K key, V value) | 지정된 키와 값을 맵에 저장함. 같은 키가 존재하면 값을 변경함. |
| putAll(Map<? extends K, ? extends V> m) | 지정된 맵의 모든 매핑을 현재 맵에 복사함. |
| putIfAbsent(K key, V value) | 지정된 키가 존재하지 않을 때만 키와 값을 맵에 저장함. |
| get(Object key) | 지정된 키에 연결된 값을 반환함. |
| getOrDefault(Object key, V defaultValue) | 지정된 키에 연결된 값을 반환하고, 없으면 기본값을 반환함. |
| remove(Object key) | 지정된 키와 그에 연결된 값을 맵에서 제거함. |
| clear() | 맵에서 모든 키와 값을 제거함. |
| containsKey(Object key) | 맵이 지정된 키를 포함하고 있는지 확인함. |
| containsValue(Object value) | 맵에 하나 이상의 키가 지정된 값을 연결하고 있는지 확인함. |
| keySet() | 맵의 키들을 Set 형태로 반환함. |
| values() | 맵의 값들을 Collection 형태로 반환함. |
| entrySet() | 맵의 키-값 쌍들을 Set<Map.Entry<K, V>> 형태로 반환함. |
| size() | 맵에 있는 키-값 쌍의 개수를 반환함. |
| isEmpty() | 맵이 비어 있는지 여부를 반환함. |
HashMap
해시를 사용해 요소를 저장함 키 값은 해시 함수를 통해 해시 코드로 변환된다.
삽입 삭제 검색은 O(1)이다 순서를 보장하지 않는다.
키 목록 조회
Set<String> keySet = studentMap.keySet()
Map의 키는 중복을 허용하지 않음 따라서 Map의 모든 키 목록을 조회하는 keySet()을 호출하면, 중복을 허용하지 않는 자료 구조인 Set을 반환함
키와 값 목록 조회

Entry는 키-값의 쌍으로 이루어진 간단한 객체
Map에 키와 값으로 데이터를 저장하면 Map 내부에서 Entry객체를 만들어서 보관함 하나의 맵에 여러 엔트리가 저장가능하다
엔트리는 맵 내부에 있는 인터페이스인데 이 인터페이스를 사용하면 됨
값 목록 조회
Collection<Integer> values = studentMap.values()
Map은 값 목록 중복을 허용함 그래서 중복을 허용하지 않는 셋으로 반환할 수는 없다 그리고 입력 순서를 보장하지 않기 때문에 List로 변환할수도없다 그래서 단순히 값의 모음이라는 의미의 상위 인터페이스인 Collection으로 반환함
맵에 같은 키에 다른 값을 저장하면 덮어쓰기를 한다
PutIfAbsent()를 사용하면 없는 경우에만 입력을 할 수 있다.

해시를 사용해서 키와 값을 저장하는 자료 구조를 해시 테이블이라 한다.
HashSet은 해시 테이블의 주요 원리를 사용하지만 키-값 저장 방식 대신 키만 저장하는 특수한 형태의 해시 테이블을 이용한다.
LinkedHashMap
해시맵이랑 유사하지만 연결 리스트를 사용하여 삽입 순서나 최근 접근 순서에 따라 요소를 유지함
입력 순서에 따라 순회가 가능하다 해시맵이랑 비슷하지만 입력 순서를 링크로 유지해야 하여 조금 더 무겁다
HashMap과 비슷하게 O(1)의 시간복잡도다
TreeMap
레드-블랙 트리를 기반으로한 구현이다
모든 키는 자연 순서 또는 생성자에 제공된 Comparator에 의해 결정
get, put, remove와 같은 주요 작업은 O(log n)이다
정렬된 순서로 저장된다.
value값이 아니라 키 자체의 데이터 값을 기준으로 정렬되어 저장됨
'자료구조' 카테고리의 다른 글
| Stack, Queue, Deque (0) | 2025.07.24 |
|---|---|
| Set과 주요 메서드 (0) | 2025.07.24 |
| HashSet (0) | 2025.07.24 |
| 해시 (0) | 2025.07.24 |
| 배열리스트 vs 연결리스트 성능 비교 (0) | 2025.07.24 |