Java 입문 | java.util 패키지 - 콜렉션 | Map 인터페이스 및 관련 클래스
Map 인터페이스
Map 인터페이스는 데이터를 저장하기 위해서 다른 객체를 키 값으로 지정하여 key-value를 하나의 쌍으로 하여 저장하여 관리하는 Collection으로써, 키 객체의 중복을 허용하지 않지만, 데이터의 중복은 허용한다. 인덱스를 관리하지 않기 때문에 정렬 등의 작업에는 부적합하다. Map 인터페이스를 구현한 하위 클래스로는 HashMap, LinkedMap, TreeMap 이 있다.
- Map
- HashMap
- LinkedHashMap
- LinkedMap
- SortedMap
- TreeMap
Map 메소드
메소드 | 설명 |
---|---|
void clear() | Map에 저장된 객체를 삭제한다. |
boolean containsKey(Object key) | 지정한 키(key)가 존재하는지 여부를 반환한다. |
boolean containsValue(Object value) | 지정한 값(value)이 존재하는지 여부를 반환한다. |
V get(Object key) | 지정한 키(key)에 해당하는 데이터를 반환한다. |
boolean isEmpty() | Map이 비어 있는지의 여부를 반환한다. |
Set<K> keySet() | key 목록을 Set 객체 형태로 반환한다. |
V put(K key, V value) | 키(key)와 값으로 구성된 새로운 데이터를 추가한다. |
void putAll(Map<? extends K, ? extends V> m) | Map에 또 다른 Map를 추가한다. |
V remove(Object key) | 지정한 키(key)에 해당하는 데이터(value)를 삭제하고 삭제한 데이터(value)를 반환한다. |
int size() | Map의 요소 개수를 반환한다. |
Collection<V> values() | value 목록을 Collection 형태로 반환한다. |
HashMap 클래스
Map 계열의 Collection으로써, 데이터를 저장하기 위해 해시 테이블을 사용한다. HashMap은 데이터를 저장할 때 저장하려는 요소 외에 key 값에 해당하는 객체를 지정하며, 데이터를 얻어 올 때도 저장했던 key 값에 의해 데이터를 얻게 된다. 따라서 HashMap 객체를 생성할 때도 key값과 value값을 지정하는 생성자를 사용할 수도 있다. HashMap은 정렬 기능을 지원하지 않는다.
HashMap 예제
package com.devkuma.tutorial.java.util.collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class HashMapClass1 {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
System.out.println("\n-- Example1 -----");
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println("Key=" + entry.getKey() + ", Value=" + entry.getValue());
}
System.out.println("\n-- Example2 -----");
Iterator<Entry<Integer, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
System.out.println("Key : " + entry.getKey() + " Value :" + entry.getValue());
}
System.out.println("\n-- Example3 -----");
// Java8 only, forEach and Lambda
map.forEach((k, v) -> System.out.println("Key=" + k + ", Value=" + v));
System.out.println("\n-- Example4 -----");
for (Integer key : map.keySet()) {
System.out.println("key=" + key + ", value=" + map.get(key));
}
}
}
실행 결과는 아래와 같습니다.
-- Example1 -----
Key=1, Value=one
Key=2, Value=two
Key=3, Value=three
-- Example2 -----
Key : 1 Value :one
Key : 2 Value :two
Key : 3 Value :three
-- Example3 -----
Key=1, Value=one
Key=2, Value=two
Key=3, Value=three
-- Example4 -----
key=1, value=one
key=2, value=two
key=3, value=three
LinkedHashMap 클래스
LinkedHashMap 클래스는 HashMap 클래스를 상속한 클래스로써 입력한 순서대로 데이터를 저장 시키는 Collection이다. LinkedHashMap는 데이터를 key-value 한 쌍으로 저장되며, 데이터를 얻어 올 때도 입력한 순서대로 데이터를 얻게 된다. HashMap과는 달리 입력한 순서대로 정렬을 보장한다.
LinkedHashMap 예제
package com.devkuma.tutorial.java.util.collection;
import java.util.LinkedHashMap;
import java.util.Map;
public class LinkedHashMapClass {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<String, Integer>();
map.put("11", 104);
map.put("23", 133);
map.put("32", 111);
map.put("24", 123);
map.put("15", 144);
map.put("36", 113);
for (String key : map.keySet()) {
System.out.println("key=" + key + ", value=" + map.get(key));
}
}
}
실행 결과는 아래와 같습니다.
key=11, value=104
key=23, value=133
key=32, value=111
key=24, value=123
key=15, value=144
key=36, value=113
TreeMap 클래스
TreeMap 클래스는 Map 인터페이스와 SortedMap 인터페이스를 구현한 클래스로써 정렬 기능이 지원되는 Map 형태의 Collection이다. TreeMap은 데이터를 key-value 한 쌍으로 저장되며, 정렬을 지원하고 데이터를 얻어 오는 속도도 빠르다. HashMap과는 달리 오름차순으로 key 값을 저장한다.
TreeMap 예제
package com.devkuma.tutorial.java.util.collection;
import java.util.Map;
import java.util.TreeMap;
public class TreeMapClass {
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<String, Integer>();
map.put("11", 104);
map.put("23", 133);
map.put("32", 111);
map.put("24", 123);
map.put("15", 144);
map.put("36", 113);
for (String key : map.keySet()) {
System.out.println("key=" + key + ", value=" + map.get(key));
}
}
}
실행 결과는 아래와 같습니다.
key=11, value=104
key=15, value=144
key=23, value=133
key=24, value=123
key=32, value=111
key=36, value=113