자바
[JAVA] Map과 구현 클래스
planting grass
2023. 11. 14. 17:26
728x90
코딩테스트를 준비하기 위해 코딩을 하다 보니 Map을 종종 사용할 때가 있다.
코드를 짜다 문득 Map과 HashMap의 차이점이 뭘까 해서 찾아봤다.
사실 주로 Map을 사용했었는데 이번에 HashMap을 사용했고, 둘이 다른 점이 있어서 기록할 겸 적어놓는다.
간단하게 말하자면 Map
은 HashMap
이 구현하는 인터페이스라고 생각하면 된다.
1. Map<String, Object> map = new HashMap<>();
2. HashMap<String, Object> map = new HashMap<>();
HashMap을 사용하려면 위와 같이 생성할 수 있다.
1번 코드의 경우 Map 인터페이스의 참조 변수를 선언 후 HashMap인스턴스를 할당했다.
즉, Map 인터페이스의 메서드를 모두 사용할 수 있다는 소리다.
2번 코드의 경우 HashMap 클래스의 인스턴스를 직접 선언했다.
즉, HashMap 클래스의 메서드만 사용이 가능하다.
Map을 구현한 클래스는 여러개가 있다.
대표적인 클래스는 아래와 같다.
- HashMap
- LinkedHashMap
- TreeMap
- ConcurrentHashMap
- WeakHashMap
- EnumMap
만약 코드를 짜다 기존의 Map 인터페이스에서 다른 인터페이스의 Map을 사용해야 할 경우가 발생한다고 가정해보자.
그러면 1번 코드의 경우 적은 코드의 수정만 하면 된다.
하지만, 2번 코드의 경우 HashMap에 대한 Object를 담고 있기 때문에 필요한 코드의 수정이 많아진다.
때문에 이제부터 1번 코드처럼 사용하도록 해야겠다.
728x90