java - Map 인터페이스와 HashMap

잠자는 고양이·2025년 5월 15일

Java

목록 보기
57/73

Map 인터페이스

키와 값의 쌍(key-value pair)으로 데이터를 다룰 때 주로 사용하는 인터페이스입니다.

  • Collection 인터페이스의 하위 인터페이스가 아님
  • 동일한 Key에 대해서는 하나의 값만 허용 (중복 Key 불가)
  • Key의 순서는 자료구조에 따라 다를 수 있음 (있을 수도, 없을 수도 있음)

Map 인터페이스의 주요 메소드

메소드설명
put(K key, V value)지정된 키에 값을 추가
이미 키가 존재하면 기존 값을 덮어씀
get(Object key)지정된 키에 매핑된 값을 반환
containsKey(Object key)지정된 키가 Map에 존재하는지 확인
remove(Object key)지정된 키를 삭제
keySet()Map에 있는 모든 키를 Set 형태로 반환
values()Map에 있는 모든 값을 Collection 형태로 반환
entrySet()Map에 있는 모든 키-값 쌍을 Set 형태로 반환

HashMap 클래스

  • 키-값(key-value)을 저장하는 자료구조
  • 내부적으로 해싱(Hashing) 을 이용하여 데이터를 저장
  • Key는 중복 불가능, Value는 중복 가능
  • 동일한 Key에 대한 데이터가 추가되면 기존 값을 덮어씀
  • 검색, 삽입, 삭제의 평균 시간 복잡도: O(1)
  • 순서를 보장하지 않음
  • null 키 허용

TreeMap 클래스

  • Map 인터페이스의 구현체로, Key 기준 자동 정렬되는 Map
  • 내부적으로 Red-Black Tree 자료구조 사용
  • 정렬 기준: 숫자 → 알파벳 → 한글
  • Key는 중복 불가, Value는 중복 가능
  • 검색, 삽입, 삭제의 평균 시간 복잡도: O(log n)
  • HashMap보다 성능이 느림

LinkedHashMap 클래스

  • Map 인터페이스의 구현체로, 삽입 순서 유지
  • 내부적으로 HashTable + LinkedList 구조 사용
  • 검색 속도는 O(1)
  • Key 중복 불가, Value 중복 가능
  • 삽입 순서를 유지 (HashMap과의 주요 차이점)
  • 정렬 기능 없음

HashMap의 내부 동작 원리

  • Key-Value 쌍을 저장
  • 검색, 삽입, 삭제 연산: 평균 O(1)
  • 일반적으로 Java에서 Map을 사용한다는 것은 HashMap 사용을 의미
  • 내부 구조: 배열 + 연결 리스트 + 레드-블랙 트리

HashMap 요소 추가 매커니즘

  1. hashCode()를 사용해 Key의 해시값 계산
  2. 해시값을 이용해 버킷(배열 인덱스) 결정
  3. 해당 버킷이 비어 있다면 바로 저장
  4. 버킷에 이미 요소가 있다면 equals()를 통해 중복 여부 확인
    • 중복이 아니라면 요소 추가
    • 요소가 적을 경우: LinkedList 사용
    • 충돌이 많아지면: Red-Black Tree로 전환
profile
개발자가 되고 싶은 잠자는고양이

0개의 댓글