자바 컬렉션 프레임워크의 마지막 맵을 정리 해보자.
맵은 아래 그림의 빨간 네모 안의 것들이다.
Map
Map은 Collection 과 큰 흐름이 달라서 구분되어있다.
Map은 Key와 Value를 하나의 쌍으로 저장하는 방식을 사용한다.
Map 인터페이스를 구현한 클래스들은 아래와 같은 특징을 가진다.
- 요소의 저장 순서를 유지하지 않음.
- 키는 중복을 허용하지 않지만, 값의 중복은 허용함.
Map의 대표적인 메서드들은 다음과 같다.
타입 | 메서드 | 설명 |
void | clear() | 해당 맵의 모든 매핑을 제거 |
boolean | containsKey(Object key) | 해당 맵이 전달된 키를 포함하고 있는지를 확인 |
boolean | contanisValue(Object value) | 해당 맵이 전달된 값에 해당하는 하나 이상의 키를 포함하고 있는지 확인 |
V | get(Object key) | 해당 맵에서 전달된 키에 대응하는 값 반환, 매핑되는 키가 없으면 null 반환 |
boolean | isEmpty() | 해당 맵이 비어있는지 확인 |
Set<K> | keySet() | 해당 맵에 포함되어 있는 모든 키로 만들어진 Set 객체 반환 |
V | put(K key, V value) | 해당 맵에 전달된 키에 대응하는 값으로 특정 값 매핑 |
default V | putIfAbsent(K key, V value) | 해당 맵에 키 값이 존재시 해당하는 값 반환, 없다면 저장하고 null 반환 |
V | remove(Object key) | 해당 맵에서 전달된 키에 대응하는 매핑 제거 |
boolean | remove(Object key, Object value) |
해당 맵에서 특정 값에 대응하는 특정 키의 매핑을 제거 |
V | replace(K key, V value) | 해당 맵에서 전달된 키에 대응하는 값을 특정 값으로 대체 |
boolean | replace(K key, V oldValue, V newValue) |
해당 맵에서 특정 값에 대응하는 전달된 키의 값을 새로운 값으로 대체 |
int | size() | 해당 맵의 매핑의 총 개수 반환 |
Collection(V) | values() | 해당 맵에 포함되어 있는 모든 값으로 만들어진 Collection 객체 반환 |
전체 메서드를 보고 싶다면 아래 공식 문서를 참고하자.
Hashtable
HashMap 클래스와 같은 동작을 하는 클래스
대부분의 메서드는 HashMap에서 사용이 가능하여 현재는 거의 사용하지 않음.
기존 코드와의 호환성을 위해서 남아있음.
HashMap
해시 알고리즘을 사용하여 검색 속도가 매우 빠르다.
Map 인터페이스를 구현하고 있기 때문에 위의 Map 메서드는 모두 사용이 가능하다.
그 외 성격은 Map 의 기본적인 성격과 같다.
알고리즘 풀이에서는 다음 글과 같이 사용하였다.
TreeMap
TreeMap 은 Map 데이터를 이진 검색 트리의 형태로 저장한다.
JDK 1.2부터는 이진 검색 트리의 성능을 향상한 레드-블랙 트리(자가 균형 이진 탐색 트리)로 구현한다.
이진 탐색 트리는 기본적으로 왼쪽 자식 노드가 부모보다 작은 값 우측에 큰 값이 저장되는데 그렇기 때문에
저장하면 자동으로 오름차순 정렬이 된다.
TreeMap에서 추가적으로 사용하는 메서드는 다음과 같다.
타입 | 메서드 | 설명 |
NavigableMap<K, V> | descendingMap() | 해당 맵에 포함된 모든 매핑을 역순으로 반환(내림차순) |
Map.Entry<K, V> | firstEntry() | 해당 맵에서 가장 작은 키와 그에 대응하는 값의 엔트리를 반환 |
K | firstKey() | 해당 맵에서 가장 작은 키를 반환 |
Map.Entry<K, V> | lastEntry() | 해당 맵에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환 |
K | lastKey() | 해당 맵에서 가장 큰 키를 반환 |
Map.Entry<K, V> | ceilingEntry(K key) | 해당 맵에서 전달된 키와 같거나, 전달된 키보다 큰 키 중에서 가장 작은 키와 그에 대응하는 값의 엔트리를 반환, 없다면 null 반환 |
K | ceilingKey(K key) | 해당 맵에서 전달된 키와 같거나, 전달된 키보다 큰 키 중에서 가장 작은 키 반환, 없다면 null 반환 |
Map.Entry<K, V> | floorEntry(K key) | 해당 맵에서 전달된 키와 값거나, 전달된 키보다 작은 키 중에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환, 없다면 null 반환 |
K | floorKey(K key) | 해당 맵에서 전달된 키와 같거나, 전달된 키보다 작은 키 중에서 가장 큰 키 반환, 없다면 null 반환 |
SortedMap<K, V> | headMap(K toKey) | 해당 맵에서 전달된 키보다 작은 키로 구성된 부분만을 반환 |
Map.Entry<K, V> | higherEntry(K key) | 해당 맵에서 전달된 키보다 작은 키 중에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환, 없다면 null 반환 |
K | higherKey(K key) | 해당 맵에서 전달된 키보다 작은 키 중에 서 가장 큰 키 반환, 없다면 null |
Map.Entry<K, V> | lowerEntry(K key) | 해당 맵에서 전달된 키보다 큰 키 중에서 가장 작은 키와 그에 대응하는값의 엔트리를 반환, 없다면 null 반환 |
K | lowerKey(K key) | 해당 맵에서 전달된 키보다 큰 키 중에서 가장 작은 키를 반환, 없다면 null |
Map.Entry<K, V> | pollFirstEntry() | 해당 맵에서 가장 작은 키와 그에 대응하는 값의 엔트리를 반환하고, 해당 엔트리를 맵에서 제거 |
Map.Entry<K, V> | pollLastEntry() | 해당 맵에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환하고, 해당 엔트리를 맵에서 제거 |
SortedMap<K, V> | subMap(K fromKey, K to Key) |
해당 맵에서 fromKey 부터 toKey 이전 까지로 구성된 부분만을 반환 fromKey 는 포함, toKey는 포함되지 않음 |
SortedMap<K, V> | tailMap(K fromKey) | 해당 맵에서 fromKey와 같거나 fromKey 보다 큰 키로 구성된 부분 반환 |
TreeMap도 전체 메서드는 아래 공식 문서 링크를 확인하면 된다.
이렇게 총 3개의 대분류로 자바 컬렉션 프레임워크를 정리해보았다.
정리하면서 세부 사항은 대부분 알고 있는 내용이었지만 구성하는 메서드들 중에서 새롭게 알게 된 것들이 있어서 추후에 알고리즘이나 코드를 짤 때 활용할 수 있을 것 같다.
자바 컬렉션 프레임워크(Java Collection Framework) 목록
자바 컬렉션 프레임워크(Java Collection Framework) 중 리스트(List) 정리
자바 컬렉션 프레임워크(Java Collection Framework) 중 셋(SET) 정리
참고한 사이트
'Computer Science > JAVA' 카테고리의 다른 글
JVM? GC? 는 무엇을 의미하는지 간단히 알아보기 (0) | 2022.06.22 |
---|---|
자바 컬렉션 프레임워크(Java Collection Framework) 중 셋(SET) 정리 (0) | 2022.04.15 |
자바 컬렉션 프레임워크(Java Collection Framework) 중 리스트(List) 정리 (0) | 2022.04.13 |
[JAVA] 객체 지향 프로그래밍(Object Oriented Programing) (0) | 2022.01.11 |
JAVA의 장점과 단점 (1) | 2021.12.20 |