[JAVA] Map 인터페이스

Van·2023년 5월 20일
0

JAVA의 MAP 인터페이스

Goal

  • Collection 프레임워크 중의 Map 인터페이스에 대해 간략하게 알아보자
  • 4가지 Map에 대해 알아보고, 각 Map에 대해 알아보자
  • 상황에 맞는 Map을 사용할 수 있다

Introduction

JAVA의 'Map' 인터페이스는 key-value(키-값)쌍을 저장하는 자료 구조를 표현하는데 사용됩니다. Map 인터페이스는 Java의 Collection 프레임워크의 일부이며, 'java.util'패키지에 속해 있습니다.

Collection 인터페이스와는 다른 저장 방식을 가집니다. 여기에서 키(key)는 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다.
Map 인터페이스는 많은 자료 구조와 알고리즘에서 유용하게 사용됩니다. 예를 들어, 데이터를 키-값 쌍으로 저장해야 하는 경우, 검색, 삽입 및 삭제 연산에 효율적인 접근 방법을 제공합니다.


Map 인터페이스 특징


1. 요소의 저장 순서를 유지하지 않습니다.
2. 키는 중복을 허용하지 않지만, 값의 중복은 허용합니다.

Map Method

메소드설명
V put(K key, V value)지정된 키와 값을 매핑하여 추가, 이미 동일한 키가 있다면 이전 값을 새 값으로 대체
V get(Object key)지정된 키에 해당하는 값을 반환, 해당 키가 없다면 null을 반환
V remove(Object key)지정된 키-값을 맵에서 제거
boolean containsKey(Object key)지정된 키가 맵에 있는지 확인
boolean containsValue(Object value)지정된 값이 맵에 있는지 확인
Set<K key> keySet()맵에 있는 모든 키를 Set으로 반환
Collection<V value> values()맵에 있는 모든 값을 Collection으로 반환
Set<Map.Entry<K key, V value>> entrySet()맵에 있는 모든 키-값 쌍을 Set으로 반환합니다

출처 : https://zhongyangma.github.io/archivers/Maps-In-Java

1. HashMap

  • 해시 테이블을 기반으로한 'Map'구현체
  • 키-값 쌍을 저장하며, 키의 순서를 보장하지 않습니다.
  • null을 허용하고, 동기화하지 않습니다.
  • 평균적으로 상수 시간(Big O(1))의 삽입, 검색, 삭제 연산을 제공합니다.
  • 순서에 의존하지 않고 빠른 연산 속도가 필요한 경우에 사용하기 좋습니다.

2. TreeMap

  • 이진 검색 트리를 기반으로한 'Map'구현체
  • 키-값 쌍을 저장하며, 키의 정렬된 순서를 유지
  • null을 허용하지 않고, 동기화되지 않습니다.
  • 평균적인 시간 복잡도는 Big O(Log N)의 삽입, 검색, 섹자 연산을 제공합니다.
  • 정렬된 순서로 순회하거나 범위 검색을 할 수 있습니다.
  • 검색과 정렬이 중요한 경우 사용

3. LinkedHashMap

  • 해시 테이블과 연결 리스트를 결합한 'Map' 구현체
  • 키-값 쌍을 저장하며, 입력 순서를 보존
  • null을 허용하고, 동기화 되지 않습니다.
  • 평균적인 시간 복잡도는 Big O(1)의 삽입, 검색, 섹자 연산을 제공합니다.
  • 순서도 중요하면서 빠른 연산 속도가 필요한 경우 사용

4. ConcurrentHashMap

  • 스레드가 안전한 'Map'구현체입니다.
  • 키-값 쌍을 저장하며, 동기화된 연산을 제공하여 여러 스레드에서 안전하게 사용
  • null을 허용하지 않습니다.
  • 삽입, 검색, 삭제 연산은 락을 분할하여 동시에 수행할 수 있도록 설계되어 있어, 고도의 동시성을 지원합니다.
  • 여러 스레드에서 동시에 맵에 접근하고 수정이 필요한 경우에 사용
profile
그럭저럭 어렵지 않게 Smile!

0개의 댓글