Map 자료구조를 사용하는 알고리즘 문제를 풀 때, 나도 모르게 Map<> map = new HashMap<>();
을 사용하는 모습을 볼 수 있었다.
그냥 Map은 HashMap으로 구현할 수 있다는 것만 알고 자세한 이유는 알지 못했다.😅
알고 쓰는 게 기본이니까 정리!
1. Map이 인터페이스이기 때문이다.
Map은 인터페이스이기 때문에 선언만 가능하며 객체 생성(new)이 불가능하다.
HashMap은 Map을 구현한 구현체이기 때문에 HashMap을 Map형태로 선언할 수 있다.
2. 유연성을 높이기 위함이다.
Map을 구현한 클래스는 HashMap, TreeMap 등이 있다.
Map형태로 선언한 경우 언제든 다른 구현체로 변경할 수 있다. 객체지향스럽게, 변경에 용이하게 하는 것이다.
💥 다만, Map형태로 선언한 경우, Map 인터페이스가 가진 메서드만 사용할 수 있기 때문에 하위 클래스의 자체 메서드를 사용하려면 다운캐스팅이 필요하다.
ex) ((HashMap)map).clone();
-> HashMap이 가진 clone 메서드를 사용하는 경우
Reference