카테고리 없음

Java ConcurrentHashMap

오개발 2024. 11. 9. 09:16

개발을 하다보면 자주 사용하는 Map이 있다.

 

Map 구현체

Map 인터페이스의 구현체로 HashMap, HashTable, ConcurrentHashMap 등이 있다. 이 셋은 과연 어떤 차이가 있을까?

 

 

 

Key, Value에 Null을 허용? Permalink

우선 HashMap 같은 경우 key와 value에 null값을 허용한다.

@Test
    void hashmap() {
        Map<String, String> hashMap = new HashMap<>();

        hashMap.put("a", null);
        hashMap.put(null, "a");

        assertThat(hashMap.get(null)).isEqualTo("a");
        assertThat(hashMap.get("a")).isNull();
    }

HashTable은 key와 value에 null이 들어가게 되면 NullPointerException이 발생한다.

@Test
    void hashtable() {
        Hashtable<String, String> hashtable = new Hashtable<>();

        assertThrows(NullPointerException.class, () -> hashtable.put(null, "a"));
        assertThrows(NullPointerException.class, () -> hashtable.put("a", null));
    }

ConcurrentHashMap도 Hashtable과 같이 key와 value에 null이 들어가게 되면 NullPointerException이 발생한다.

@Test
    void concurrentHashmap() {
        Map<String, String> concurrentHashMap = new ConcurrentHashMap<>();

        assertThrows(NullPointerException.class, () -> hashMap.put("a", null));
        assertThrows(NullPointerException.class, () -> hashMap.put(null, "a"));
    }

 

 

 

 

 

 

 

 

 

 

 

참조 : https://parkmuhyeun.github.io/woowacourse/2023-09-09-Concurrent-Hashmap/