개념
특징
- 키와 값의 쌍
:각 요소는 하나의 key와 이에 매핑되는 하나의 value로 구성된다. key는 고유해야 하며, 동일한 키에 대해 다른 값을 저장x
- 순서
:Map의 요소들은 특정한 순서를 보장하지 않는 경우가 많음. 그러나 하위 클래스에 따라 순서가 달라질 수 있다.
- 빠른 접근: 키를 사용하여 값에 빠르게 접근 가능. 일반적으로 O(1)의 시간 복잡도를 가짐
주요 메서드
- put(key,value): 키와 값을 추가
- get(key): 지정된 key의 value 값 반환. 존재하지 않으면 null
- remove(key): 지정된 key에 대한 엔트리 삭제
- containsKey(key): 지정된 키가 존재하는지 확인
- keySet(): 모든 키를 포함하는 Set을 반환
- values(): 모든 값을 포함하는 Collection을 반환
- entrySet():모든 키-값 쌍을 포함하는 Set을 반환
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
주요 구현 클래스
- HashMap
: 해시 테이블을 기반으로 하는 구현. 빠른 검색속도와 효율적인 메모리 사용 제공. 키의 순서 보장x
- LinkedHashMap
: HashMap의 기능을 확장하여 요소의 삽입 순서 유지
- TreeMap
:이진 검색 트리를 기반으로 하며, 키의 자연 순서 또는 지정된 비교기에 따라 정렬된 상태로 데이터를 저장
Code 예시
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapExam {
public static void main(String[] args) {
Map<String,String> map=new HashMap<>();
map.put("001","kim");
map.put("002","lee");
map.put("003","kang");
map.put("003","kim");
System.out.println(map.size());
System.out.println(map.get("001"));
Set<String> keys=map.keySet();
Iterator<String> iter =keys.iterator();
while(iter.hasNext()){
String key= iter.next();
String value=map.get(key);
System.out.println(key+":"+value);
}
}
}
결과
