개요
- 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
