HasMap
- Map 인터페이스를 구현한 해시테이블 기반의 자료구조
- 중복된 키 허용하지 않음
- 하나의 값에만 매핑
특징
- 순서를 유지 x
- 키와 값은 null 가능 , 동기화 x
- 키와 값은 모두 object 타입, 모든 데이터 저장 가능
주요 메서드
- put(key, value): 지정된 키와 값을 매핑하여 HashMap에 삽입
- get(key): 지정된 키에 대응하는 값을 반환
- remove(key): 지정된 키와 연결된 값을 제거
- containsKey(key): 지정된 키가 HashMap에 있는지 확인
- keySet(): HashMap의 모든 키를 포함하는 Set을 반환
- values(): HashMap의 모든 값을 포함하는 Collection을 반환
- size(): HashMap에 포함된 요소의 개수를 반환
활용
- 데이터를 삽입하고 가져오는데 매우 효율적
- 키-값 쌍 데이터를 다룰 때 유용, 빠른 데이터 접근을 요구하는 상황에 적합
주의할 점
- 데이터 삽입 순서 보장 x
- 동기화가 안되기 때문에 여러 스레드에서 동시에 접근할 경우 문제 발생
- 해시 충돌에 대한 처리가 내부적으로 이루어지지만, 많은 양의 데이터 저장할경우 충돌 발생
간단한 물건의 재고를 관리하고 재고 추가 및 감소하는 상황을 나타내는 코드
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// 물건의 이름과 해당 물건의 재고 수량을 저장할 HashMap 객체를 생성합니다.
HashMap<String, Integer> 재고관리 = new HashMap<>();
// 재고 추가
재고관리.put("사과", 10);
재고관리.put("바나나", 5);
재고관리.put("딸기", 3);
// 재고 확인
System.out.println("사과의 재고: " + 재고관리.get("사과"));
System.out.println("바나나의 재고: " + 재고관리.get("바나나"));
System.out.println("딸기의 재고: " + 재고관리.get("딸기"));
// 사과의 재고를 5개 늘립니다.
int 현재사과재고 = 재고관리.get("사과");
재고관리.put("사과", 현재사과재고 + 5);
// 재고 변경 후 출력
System.out.println("사과의 재고: " + 재고관리.get("사과"));
// 사과의 재고를 3개 줄입니다.
재고관리.put("사과", 현재사과재고 - 3);
// 재고 변경 후 출력
System.out.println("사과의 재고: " + 재고관리.get("사과"));
}
}