Map & HashMap의 차이점
일반적으로 Java Code에서 HashMap을 선언해서 사용한다고 할 때, 아래와 같이 선언하여 사용할 수 있으며 그 둘은 모두 동일하게 HashMap을 사용할 수 있도록 이를 선언하는 코드에 해당한다.
HashMap<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<String, Object>();
그렇다면 여기서 가질 수 있는 궁금증은 다음과 같다.
HashMap으로 받을 때와 그냥 Map으로 받을 때와 무슨 차이가 있는 것일까?
위의 코드에서 두번째 라인 코드에서 사용된 Map은 "HashMap이 구현하는 인터페이스"의 개념으로 이해하면 된다. 그렇기 때문에 실질적으로 위의 두 코드 모두 정상적으로 HashMap을 선언하여 사용할 수 있고 그 기능상에서 차이를 보이지 않는다.
하지만, 위의 두 코드는 코드의 유지보수성을 고려했을 때 그 차이를 보인다.
java에서는 HashMap 외에도 다양한 종류의 Map이 존재한다.
(여기서 말하는 다양한 종류의 map에 대해서는 추후에 다루는 것으로 하겠다.)
그리고 이 여러가지 종류의 Map들은 모두 Map interface를 구현하는 구조로 정의되어 있다. 그렇기 때문에 그냥 Map 인터페이스를 사용해서 두번째 코드처럼 HashMap을 사용하게 되면 나중에 HashMap이 아닌 다른 종류의 Map을 사용해야하는 상황이 발생한다고 하더라도 많은 코드 수정 필요없이 손쉽게 이를 반영할 수 있다.
하지만 첫번째 코드처럼 작성하게 되면 해당 map Object는 오직 HashMap에 대한 Object만을 담을 수 있기 때문에 앞에서 살펴본 두번째 code에 비해서 다소 코드의 수정이 더 할일이 많아지고 불편해진다. 즉, 유지보수성이 더 떨어진다고 할 수 있다.
굉장히 개괄적으로 간단한 내용에 대해서만 다루었는 데 보다 더 구체적인 내용에 대해서는 추후에 다시 다루는 것으로 하겠다.
'Web Backend > Java' 카테고리의 다른 글
Optional (0) | 2021.06.28 |
---|---|
enum (0) | 2021.06.28 |
LocalDateTime (0) | 2021.06.28 |
String.split() method (0) | 2021.06.28 |
String.valueOf( ) method (0) | 2021.06.28 |
댓글
이 글 공유하기
다른 글
-
Optional
Optional
2021.06.28 -
enum
enum
2021.06.28 -
LocalDateTime
LocalDateTime
2021.06.28 -
String.split() method
String.split() method
2021.06.28