개요
개발하고 있는 Java 애플리케이션에서 HashMap을 사용하는데, Java를 놓은지 오래 되었다보니 기본 개념만 겨우 기억하고 있다. 개발 진행에 필요한 개념을 다시 돌아보자.
HashMap
Map 인터페이스를 구현한 대표적인 Map 컬렉션이다. Map 인터페이스를 상속하고 있어 키와 값으로 구성된 Entry 객체를 저장하는 구조라는 Map의 성질를 그대로 갖고 있다. 키와 값은 모두 객체이며, 값은 중복을 허용하지만 키는 허용하지 않는다. 특히 HashMap의 경우에는 Hashing을 사용해 많은 양의 데이터를 검색하는 성능이 뛰어나다.

내부에 키와 값을 저장하는 자료 구조를 가지며, 해시 함수를 통해 키, 값이 저장되는 위치를 결정하므로 사용자는 그 위치를 알 수 없다. 또한 삽입 순서와 저장 위치와 관련도 없다.
기본 사용법
선언
인자로 키와 값 타입을 전달하며 기본생성자를 호출한다. 저장공간보다 값이 추가로 들어오면 공간을 늘리는데, 두 배씩 늘리기 때문에 저장할 데이터의 개수를 알고 있다면 초기 용량을 지정하는 것이 좋다.
import java.util.HashMap;
HashMap<String,String> map = new HashMap<String,String>();
HashMap<String,String> map = new HashMap<>();
# 초기 용량 지정
HashMap<String,String> map = new HashMap<>(10);
값 추가
pub 메서드를 사용하여 값을 추가한다. 동일 키에 값을 중복으로 지정하면 새 값으로 갱신된다.
map.put("key", "value");

값 삭제
값을 삭제할 때는 remove 함수를 사용한다. 모든 값을 삭제할 때는 clear를 사용한다.
map.remove("key");
# 모든 값 삭제
map.clear();

특정 키의 값 조회
지정한 키의 값을 조회할 때는 get을 사용한다.
map.get("key");

순회
HashMap을 순회할 때는 주로 keySet, entrySet을 사용한다. keySet은 HashMap의 키만 반환받아 사용하는 것이고, entrySet은 키와 값을 한 번에 받는다.
import java.util.Map.Entry;
public class Main {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("1", "사과"); //값 추가
map.put("2", "바나나");
for (Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}

참고 문서
https://coding-factory.tistory.com/556