TIL/JAVA

[JAVA] Map Interface

아람2 2024. 12. 29. 19:26
반응형

Map 

데이터를 Key 와 Value 쌍으로 저장하여, Key 를 Value 에 매핑한다 

Map<Key, Value>

 

Map Interface 의 특징 

1. No Duplicates in Keys 키는 고유해야 하고 (중복될 수 없고), 값은 중복될 수 있다 

2. Null Handling HashMap 과 LinkedHashMap 과 같은 구현은 하나의 Null 키를 허용하고, 대부분의 구현체는 여러 개의 Null 값을 허용한다, 예외적으로 TreeMap 은 키에 Null 값을 허용하지 않는다 (내부적으로 키를 비교/ 정렬하기 때문) 

3. Threard-Safe Alternaitves 기본적인 Map 구현체는 스레드에 안전하지 않기 때문에 멀티스레드 환경에서는 추가 처리가 필요하다 

 - ConcurrentHashMap 스레드에 안전한 Map 구현체로, 동시성 환경에서 성능 최적화, 내부적으로 Lock 을 사용하여 동시성 지원 

 - Collections.synchronizedMap() 기존 Map 을 래핑하여 동기화된 Map 을 생성

 

🐣 스레드에 안전하지 않다는 말 - HashMap, TreeMap, LinkedHashMap 같은 일반적인 Map 구현체들은

멀티스레드 환경에서 동시에 여러 스레드가 접근하거나 수정할 경우, 예기치 않은 문제가 발생할 수 있다는 말이다 

두 개의 스레드가 동시에 HashMap 에 데이터를 삽입하면, 내부 데이터 구조가 손상되거나 데이터가 올바르게 저장되지 않을 수 있다 

Java 는 멀티스레드 환경에서 안전하게 Map 을 사용할 수 있도록

ConcurrentHashMap, Collectionis.synchronizedMap() 을 제공한다 🐣

 

반응형