728x90
Map과 HashMap의 차이
데이터를 저정하고 관리할 때, 키와 값을 쌍으로 데이터를 저장하는 구조가 있다. 이를 표현하는 인터페이스가 Map.
이 인터페이스를 구현한 클래스가 HashMap이다.
Map 인터페이스
키(key)와 값(value)를 하나의 쌍으로 저장하는 컬렉션 클래스를 구현하는 데 사용
- 키는 중복 x, 값은 중복 허용
Map 인터페이스를 구현한 클래스 : Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap, ...
HashMap 클래스
Map 인터페이스를 구현한 클래스, 해시 테이블을 이용하여 키와 값을 저장
해싱을 사용하기 때문에 많은 양의 데이터를 검색하는 데 뛰어나다.
해싱
해시함수를 이용하여 데이터를 해시테이블에 저장하고 검색하는 기법
해시함수는 데이터가 저장된 곳을 알려줌 -> 다량의 데이터 중에서 원하는 데이터 빨리 찾을 수 있음
1. 검색할 값의 키로 해시함수를 호출
2. 해시함수의 계산결과(해시코드)로 해당 값이 저장된 링크드 리스트를 찾음
3. 링크드 리스트에서 검색한 키와 일치하는 데이터 찾음
서랍 별로 나누어 저장된 곳에서 찾는 것과 비슷하다.
유지보수에서 차이
인터페이스와 구현체인 클래스 차이이므로, 유지보수성에서 차이가 있다.
Map이 HashMap이 구현하는 인터페이스 개념이라면, 즉 다음과 같은 코드라면
Map<String, Object> map = new HashMap<String, Object>();
나중에 HashMap이 아닌 다른 종류의 Map을 사용해야 하는 상황에서 쉽게 변경할 수 잇다.
하지만, 다음과 같은 코드라면
HashMap<String, Object> map = new HashMap<String, Object>();
HashMap에 대한 Object를 담을 수 있어서 유지보수성이 떨어진다.
728x90
'Programming > JAVA' 카테고리의 다른 글
[JAVA] Optional<> 이 뭘까? (0) | 2024.03.07 |
---|---|
[JAVA] 간단한 회원관리 프로그램 (0) | 2024.01.10 |
[JAVA] 10. 패키지 (1) | 2023.10.23 |
[JAVA] 9. 추상클래스와 인터페이스 (0) | 2023.10.23 |
[JAVA] 8. 상속과 다형성 (0) | 2023.10.19 |