Formoat's Open Blog
컬렉션 - Map 본문
인터페이스 | 구현 클래스 | 특징 |
Map | HashMap, Hashtable, LinkedHashMap, Properties, TreeMap | 키와 값으로 구성, 키와 값은 모두 객체이고 키는 중복(X), 값은 중복(O) Map.Entry라는 키와 값을 갖는 객체를 생성해 컬렉션에 저장하는 구조 |
1. HashMap
키와 값으로 구성되어 있으며 키는 중복이 허용되지 않는다. Set과 마찬가지로 동등 객체 비교를 위해 키 객체의 경우엔
hashCode() 메소드와 equals() 메소드가 재정의 되어 있어야 한다. 키 타입은 주로 String을 사용한다.
2. Hashtable
HashMap과 동일한 구조로 이루어져 있다. 차이점은 List의 Vector와 같이 스레드 동기화(synchronized)가 되어있어
멀티 스레드 환경에서 안전하게 사용할 수 있다.
3. Properties
Hashtable의 하위클래스로 Hashtable의 모든 특징을 그대로 가지고 있다. 다만 Properties의 키와 값은 모두 String 타입만
사용하도록 제한되어 있다. 프로퍼티 파일을 읽을 때 사용이 되며, 이 파일은 옵션 정보, DB 연결 정보, 국제화 정보등 을 기록한
텍스트 파일로서 변경이 잦은 문자열을 저장해 유지보수를 쉽게 할 수 있도록 만들어 준다.
Function | Return Type | Method | Remarks |
추가 | V | put(K key, V value) | 키와 값을 저장 저장에 성공할 경우 값을 반환 |
V | replace(K key, V value) | 전달된 키에 해당하는 값을 특정 값으로 대체 | |
boolean | replace(K key, V oldValue, V newValue) | 전달된 키와 값에 해당하는 값을 특정 값으로 대체 | |
검색 | boolean | containsKey(Object key) | 전달된 키를 포함하고 있는지 확인 |
boolean | containsValue(Object value) | 전달된 값에 해당하는 하나 이상의 키를 포함하고 있는지를 확인 | |
Set<Map.entry<K, Y>> | entrySet() | 해당 맵에 저장된 키, 값을 Map.entry객체로 Set에 담아 반환 | |
V | get(Object key) | 전달된 키에 대응하는 값을 반환, 만약 없다면 null을 반환 | |
Set<K> | keySet() | 해당 맵에 포함되어 있는 모든 키를 저장시킨 Set을 반환 | |
Collection<V> | values() | 해당 맵에 저장된 모든 값을 Collection에 담아서 반환 | |
int | size() | 저장된 매핑의 총 개수를 반환 | |
boolean | isEmpty() | 맵이 비어있는지 확인 | |
제거 | void | clear() | 해당 맵에 저장된 모든 매핑을 제거 |
V | remove(Object key) | 해당 맵에 전달된 키에 대응하는 매핑을 제거 | |
boolean | remove(Object key, Object value) | 해당 맵에 전달된 키, 값에 대응하는 매핑을 제거 |
<표> Map 컬렉션의 주요 메소드
MapExample.java
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("1", 10);
map.put("2", 20);
map.put("3", 30);
map.put("4", 40);
Set<String> keySet = map.keySet();
for (String key : keySet) {
Integer value = map.get(key);
System.out.println("key:"+key+" "+"value:"+value);
}
System.out.println();
Set<Map.Entry<String, Integer>> entry = map.entrySet();
for (Map.Entry<String, Integer> ent : entry) {
String key = ent.getKey();
int value = ent.getValue();
System.out.println("key:"+key+" "+"value:"+value);
}
}
}
// 실행결과 //
----------------------------------------------------
key:1 value:10
key:2 value:20
key:3 value:30
key:4 value:40
key:1 value:10
key:2 value:20
key:3 value:30
key:4 value:40
'Java > Java Basic' 카테고리의 다른 글
컬렉션 - Stack, Queue (0) | 2019.09.04 |
---|---|
컬렉션 - Tree (0) | 2019.09.04 |
컬렉션 - Set (0) | 2019.09.04 |
컬렉션 - List (0) | 2019.09.04 |
컬렉션 프레임워크 (Collection Framework) (0) | 2019.09.03 |
Comments