Map 자료구조에 대한 실험

Terror·2025년 2월 24일

개요

  • MAP 자료구조에 대한 테스트를 진행해보며 알아봅시다.

실험

테스트 코드 1

import java.util.HashMap;
import java.util.Map;

public class KeySetTest {
    public static void main(String[] args) {
        Map<String, String> testMap = new HashMap<>();
        testMap.put("A", "1");
        System.out.println("Answer : " + testMap.get("A"));
    }
}

값 예상 1

  • 어떤 값이 찍힐까?
  • 물론 당연하게도 1이 찍힌다

테스트 코드 2

import java.util.HashMap;
import java.util.Map;

public class KeySetTest {
    public static void main(String[] args) {
        Map<String, String> testMap = new HashMap<>();
        testMap.put("A", "1");
        testMap.put("A", "2");
        System.out.println("Answer : " + testMap.get("A"));
    }
}

값 예상 2

  • 우리가 알고있기로, Map에는 중복된 Key가 존재 할 수 없다.
  • 그렇다면 이 로직은 오류가 날까?

  • 정답은 "그냥 덮어 씌워진다" 이다.
  • (이거떔에 오늘 블로그 작성하는것이다)

테스트 코드 3

  • HashTable도 똑같이 덮어씌워질까?
  • HashTable과 HashMap의 차이는 멀티 쓰레드환경에서 쓰레드 세이프하냐, 세이프 하지않냐의 차이 이기때문에 아마도 동일한 문제가 나올것같다.
import java.util.Hashtable;
import java.util.Map;

public class KeySetTest {
    public static void main(String[] args) {
        Map<String, String> testMap = new Hashtable<>();
        testMap.put("A", "1");
        testMap.put("A", "2");
        System.out.println("Answer : " + testMap.get("A"));
    }
}

값 예상 3

  • 음 정답이군

마무리

  • Map의 시간복잡도는 O(1)이지만, 그 내부는 역시 선형적 자료구조로 인덱스를 사용하고있기 때문에
    "A" 라는 키와, "B"라는 키가 Map자료구조 내부 동일한 인덱스인 3번에 저장됐을시, 시간복잡도 O(1)을 못 가질 수도 있다.
  • 위에는 그냥 Map해서 떠오른 얘기다
  • 오늘 블로그 글의 핵심은 2번 테스트 코드이다, Map에 동일한 Key가 저장된다고 해서 오류가 발생하는것이 아님을 인지하자

TMI

profile
테러대응전문가

0개의 댓글