본문 바로가기

JAVA

[JAVA] MAP과 HASH MAP의 차이?

Map이란? 

- Map은 자바에서 키(key)와 값(value)을 저장하는 데이터 구조를 표현하는 인터페이스이다.

  (= Map 인터페이스라고 불린다.)

 

- 키와 값의 쌍을 '매핑(Mapping)'이라고 부른다. 

 

- Map 인터페이스는 여러 구현체가 있으며, 그중 하나가 Hash Map 이다. 

  (Map 인터페이스의 여러 구현체 : Hash Map, Tree Map, Linked Hash Map 등)

 

 

 

Hash Map 이란? 

- Hash Map은 Map인터페이스를 구현한 클래스이며, 해시 테이블을 사용하여 키와 값을 저장한다.

 

- 키와 값을 둘 다 null일 수 있으며, Hash Map은 키 중복을 허용하지 않지만 값의 중복은 허용한다.

 

- Hash Map은 삽입순서를 유지하지 않는다. 대신 해시 함수에 의해 결정되는 순서대로 요소를 저장한다.

 

 

 

두개의 차이점 ?

Map 인터페이스는 키와 값을 쌍으로 데이터를 저장하는 구조를 표현하며,

HashMap은 이를 구현한 클래스 이다.

= 기능상에서 차이는 없지만, 유지보수 면에서 차이가 날 수는 있다.

 

아래와 같이 선언이 되어있다고 하자.

HashMap<String, Object> map1 = new HashMap<String, Object>();
Map<String, Object> map2 = new HashMap<String, Object>();

 

위의 두 코드는 기능상에서 차이는 보이지 않지만 유지보수면에서 차이가 날 수 있다.

 

Map2처럼 Map인터페이스를 사용해서 HashMap을 사용하게 되면,

나중에 HashMap이 아닌 다른 종류의 Map을 사용해야하는 상황이 발생한다고 하더라도

많은 코드 수정 필요없이 손쉽게 이를 반영할 수 있다.

 

하지만 Map1처럼 작성하게 된다면 

map Object는 오직 HashMap에 대한 Object만 담을 수 있기 때문에

Map2 보다 코드의 수정이 많아지고 불편해지기 때문에 유지보수성이 떨어진다.

 

 + 추가적인 Map 인터페이스 구현체 알아보기

 

 

 

 

 

 


Reference

https://statuscode.tistory.com/38

https://juyoungit.tistory.com/587