[Java] 컬렉션 프레임워크 (3) Map

lkc9898·2022년 6월 12일

Java

목록 보기
23/25
post-thumbnail

Map이란?

Map 인터페이스는 키(Key)와 값(Value)로 구성된 객체를 저장하는 구조이다. Map의 특징으로 키는 중복 저장이 안되고, 값은 중복 저장이 가능하다. 만약 기존에 저장된 키와 동일한 키로 값을 저장할 경우 새로운 값으로 변경된다.

Map 인터페이스를 구현한 클래스로 HashMap, HashTable, TreeMap, SortedMap 등이 있다.

Map 인터페이스는 구조상의 이유로 컬렉션 인터페이스와 별도로 정의되어 있는데 그로 인해 주요 메서드가 조금씩 차이가 있다.

Map 인터페이스 주요 메서드

메서드타입설명
put(Object key, Object Value)Object주어진 키로 값을 저장 새로운 키는 null을 리턴하고
동일한 키는 값을 대체하고 이전값 리턴
containsKey(Object key) /
containsValue(Object Value
boolean주어진 키 또는 값이 있으면 true, 없으면 false를 리턴
get(Object key)Object주어진 키에 해당하는 값을 리턴
isEmpty()boolean컬렉션이 비어 있는지 여부 리턴
keySet()Set모든 키를 Set에 담아서 리턴
entrySet()Set키와 값의 쌍으로 구성된 모든 객체를 Set에 담아서 리턴
size()int저장된 키-값 쌍의 총 갯수를 리턴
clear()void모든 키와 값을 삭제
remove()remove(Object key)주어진 키와 일치하는 객체를 삭제하고 값을 리턴

HashMap

// HashMap 기본 생성
Map<Key, Value> map = new HashMap<Key, Value>(); // HashMap 생성
Map<String, Integer> map = new HashMap<>(); // 키에 문자열 타입, 값에 정수 타입으로 지정

HashMap은 해시 함수를 통해 '키'와 '값'이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 위치도 관계가 없다.

HashMap 사용 예시


Map<String, Integer> map = new HashMap<>();

// 객체 저장
map.put("Jan", 1);
map.put("Feb", 2);
map.put("Mar", 3);
map.put("Apr", 4);

System.out.println(map.size()); // 출력 : 객체 총 개수 (4)

System.out.println(map.get(Feb)); // 출력 : Feb의 값 (2)

//전체 출력
Set<String> keySet = map.keySet(); // keySet 메서드를 이용해 모든 key 담기

Iterator<String> it = keySet.iterator();

while(it.hasMoreNext()) {
	String key = it.next();
    Integer value = map.get(key);
    System.out.println(key + " : " + value);
}
/* 출력 : 
Jan : 1
Feb : 2
Mar : 3
Apr : 4
*/

map.remove("Jan"); // 객체 삭제

map.clear(); // 전체 객체 삭제

Map은 키와 값을 쌍으로 저장하기 때문에 iterator() 메서드를 직접 호출할 수 없다. 그래서 keySet() 이나 entrySet() 메서드를 이용해 Set 형태로 변환해 호출해야 한다.

0개의 댓글