Java-Map이란? Map의 종류

2019년 10월 26일 by Xion

    Java-Map이란? Map의 종류 목차

Map 컬렉션 클래스

Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가집니다.

Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용합니다.

여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다.

 

 

-특징

1. 요소의 저장 순서를 유지하지 않습니다.

2. key :  중복을 허용  X 

   value :  중복은 허용 O

 

대표적인 Map 컬렉션 클래스에 속하는 클래스

 

1. HashMap<K, V> 클래스

-Map 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나입니다.

-HashMap은 Map을 구현한다. key와 value를 묶어 하나의 entry로 저장한다는 특징을 갖는다.

-해시 알고리즘(hash algorithm)을 사용하여 많은 양의 데이터를 검색하는데 검색 속도가 매우 빠르다.

-HashMap 클래스는 Map 인터페이스를 구현하므로, 중복된 키로는 값을 저장할 수 없다.

-value에 null값도 사용 가능하다.

-멀티쓰레드에서는 HashTable을 사용한다.

( 같은 값을 다른 키로 저장하는 것은 가능 )

 

Hash Map <k,v> 주요 메소드

void clear() 해당 맵(map)의 모든 매핑(mapping)을 제거함.
boolean containsKey(Object key) 해당 맵이 전달된 키를 포함하고 있는지를 확인함.
boolean containsValue(Object value) 해당 맵이 전달된 값에 해당하는 하나 이상의 키를 포함하고 있는지를 확인함.
V get(Object key)

해당 맵에서 전달된 키에 대응하는 값을 반환함.

만약 해당 맵이 전달된 키를 포함한 매핑을 포함하고 있지 않으면 null을 반환함.

boolean isEmpty() 해당 맵이 비어있는지를 확인함.
Set<K> keySet() 해당 맵에 포함되어 있는 모든 키로 만들어진 Set 객체를 반환함.
V put(K key, V value) 해당 맵에 전달된 키에 대응하는 값으로 특정 값을 매핑함.
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() 해당 맵의 매핑의 총 개수를 반환함.

 

 

2. Hashtable<K, V>

-HashMap 클래스와 같은 동작을 하는 클래스.

-Hashtable 클래스는 HashMap 클래스와 마찬가지로 Map 인터페이스를 상속받음.

-기존 코드와의 호환성을 위해서만 남아있으므로, Hashtable 클래스보다는 HashMap 클래스를 사용하는 것이 좋다.

 

3. TreeMap<K, V>

-키와 값을 한 쌍으로 하는 데이터를 이진 검색 트리(binary search tree)의 형태로 저장합니다.

-이진 검색 트리는 데이터를 추가하거나 제거하는 등의 기본 동작 시간이 매우 빠릅니다.

-TreeMap 클래스는 NavigableMap 인터페이스를 기존의 이진 검색 트리의 성능을 향상시킨 레드-블랙 트리(Red-Black tree)로 구현합니다.

-Map 인터페이스를 구현하므로, 중복된 키로는 값을 저장할 수 없습니다.

( 같은 값을 다른 키로 저장하는 것은 가능 )

 

TreeMap<K, V> 주요 메소드

Map.Entry<K, V> ceilingEntry(K key)

해당 맵에서 전달된 키와 같거나, 전달된 키보다 큰 키 중에서 가장 작은 키와 그에 대응하는 값의 엔트리를 반환함. 만약 해당하는 키가 없으면 null을 반환함.

K ceilingKey(K key)

해당 맵에서 전달된 키와 같거나, 전달된 키보다 큰 키 중에서 가장 작은 키를 반환함.

만약 해당하는 키가 없으면 null을 반환함.

void clear() 해당 맵(map)의 모든 매핑(mapping)을 제거함.
boolean containsKey(Object key) 해당 맵이 전달된 키를 포함하고 있는지를 확인함.
boolean containsValue(Object value) 해당 맵이 전달된 값에 해당하는 하나 이상의 키를 포함하고 있는지를 확인함.
NavigableMap<K, V> descendingMap() 해당 맵에 포함된 모든 매핑을 역순으로 반환함.
Set<Map.Entry<K, V>> entrySet() 해당 맵에 포함된 모든 매핑을 Set 객체로 반환함.
Map.Entry<K, V> firstEntry() 해당 맵에서 현재 가장 작은(첫 번째) 키와 그에 대응하는 값의 엔트리를 반환함.
K firstKey() 해당 맵에서 현재 가장 작은(첫 번째) 키를 반환함.
Map.Entry<K, V> floorEntry(K key)

해당 맵에서 전달된 키와 같거나, 전달된 키보다 작은 키 중에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환함. 만약 해당하는 키가 없으면 null을 반환함.

K floorKey(K key)

해당 맵에서 전달된 키와 같거나, 전달된 키보다 작은 키 중에서 가장 큰 키를 반환함.

만약 해당하는 키가 없으면 null을 반환함.

V get(Object key)

해당 맵에서 전달된 키에 대응하는 값을 반환함.

만약 해당 맵이 전달된 키를 포함한 매핑을 포함하고 있지 않으면 null을 반환함.

SortedMap<K, V> headMap(K toKey) 해당 맵에서 전달된 키보다 작은 키로 구성된 부분만을 반환함.
Map.Entry<K, V> higherEntry(K key)

해당 맵에서 전달된 키보다 작은 키 중에서 가장 큰 키와 그에 대응하는 값의 엔트리를 반환함. 만약 해당하는 키가 없으면 null을 반환함.

K higherKey(K key)

해당 맵에서 전달된 키보다 작은 키 중에서 가장 큰 키를 반환함.

만약 해당하는 키가 없으면 null을 반환함.

Set<K> keySet() 해당 맵에 포함되어 있는 모든 키로 만들어진 Set 객체를 반환함.
Map.Entry<K, V> lastEntry() 해당 맵에서 현재 가장 큰(마지막) 키와 그에 대응하는 값의 엔트리를 반환함.
K lastKey() 해당 맵에서 현재 가장 큰(마지막) 키를 반환함.
Map.Entry<K, V> lowerEntry(K key)

해당 맵에서 전달된 키보다 큰 키 중에서 가장 작은 키와 그에 대응하는 값의 엔트리를 반환함. 만약 해당하는 키가 없으면 null을 반환함.

K lowerKey(K key)

해당 맵에서 전달된 키보다 큰 키 중에서 가장 작은 키를 반환함.

만약 해당하는 키가 없으면 null을 반환함.

Map.Entry<K, V> pollFirstEntry() 해당 맵에서 현재 가장 작은(첫 번째) 키와 그에 대응하는 값의 엔트리를 반환하고, 해당 엔트리를 맵에서 제거함.
Map.Entry<K, V> pollLastEntry() 해당 맵에서 현재 가장 큰(마지막) 키와 그에 대응하는 값의 엔트리를 반환하고, 해당 엔트리를 맵에서 제거함.
V put(K key, V value) 해당 맵에 전달된 키에 대응하는 값으로 특정 값을 매핑함.
V remove(Object key) 해당 맵에서 전달된 키에 대응하는 매핑을 제거함.
boolean remove(K key, V value) 해당 맵에서 특정 값에 대응하는 특정 키의 매핑을 제거함.
V replace(K key, V value) 해당 맵에서 전달된 키에 대응하는 값을 특정 값으로 대체함.
boolean replace(K key, V oldValue, V newValue) 해당 맵에서 특정 값에 대응하는 전달된 키의 값을 새로운 값으로 대체함.
int size() 해당 맵의 매핑의 총 개수를 반환함.
SortedMap<K, V> subMap(K fromKey, K toKey)

해당 맵에서 fromKey부터 toKey까지로 구성된 부분만을 반환함.

이때 fromKey는 포함되나, toKey는 포함되지 않음.

SortedMap<K, V> tailMap(K fromKey) 해당 맵에서 fromKey와 같거나, fromKey보다 큰 키로 구성된 부분만을 반환함.

 

'Java' 카테고리의 다른 글

[Java]-HashSet이란  (0) 2019.10.26
Java-Map전체 출력 entrySet(),keySet(),Iterator()  (0) 2019.10.26
[Java] int와 integer의 차이  (0) 2019.10.26
Java-iterator란?  (0) 2019.10.26
Java-List와 Hash의 차이점  (0) 2019.10.26