드디어..
본래 작성하려던 주제였던 HashMap과 HashSet의 차이점에 대해 알아본다.
그전에 작성했던 아래 네 글을 보면 더욱 좋다.
HashMap과 HashSet의 차이점은 크게 아래 6가지로 나눌 수 있다.
1. 정의
HashMap은 Map 인터페이스의 구현체로, HashTable과 유사한 자료구조로 데이터를 저장한다.
HashSet은 Set 인터페이스의 구현체로, 내부적으로 HashMap을 사용하기 때문에 HashTable과 유사한 자료구조로 데이터를 저장한다.
2. 데이터 저장 형태
HashMap은 Key-Value 쌍 형태로 데이터를 저장하며, Key와 Value의 mapping을 유지하고 있다.
HashSet은 객체 그 자체를 저장한다.
위에서 HashMap을 내부적으로 사용한다고 했는데,
Key 값으로는 삽입되는 객체 그 자체를, Value 값으로는 HashSet 내부 구현 코드에서 미리 선언해둔 dummy 객체를 사용한다.
3. 중복 허용 여부
HashMap은 중복 Key 값을 허용하지 않지만, 중복 Value 값은 허용한다.
ex. {'a': 1, 'b': 1, 'c': 2}
HashSet은 객체 자체를 데이터로 저장하기 때문에 중복을 허용하지 않는다.
ex. {'a', 'b', 'c'}
4. NULL 허용 여부
HashMap은 (중복 Key 값을 허용하지 않기 때문에) 단 하나의 NULL 값을 Key 값으로 가질 수 있고, 여러 NULL 값을 Value 값으로 가질 수 있다.
HashSet은 단 하나의 NULL 값을 가질 수 있다.
5. 데이터 삽입 방법
HashMap은 put() 메서드를 사용하여 데이터를 삽입하는데, Key-Value 쌍 데이터의 형태를 저장하기 때문에
삽입 연산 동안 단 하나의 객체가 생성된다.
HashSet은 add() 메서드를 사용하여 데이터를 삽입하는데,
객체 그 자체를 저장하고 내부적으로 HashMap을 사용하기 때문에 삽입되는 객체(Key값)와 dummy 객체(Value 값),
총 두 개의 객체가 삽입 연산 동안 생성된다.
성능
이전 글에서도 언급한 것처럼, HashMap이 HashSet보다 빠르다.
이유는 HashSet에 대해 작성한 이전 글을 참고하자.
그래서 데이터의 유일함(Uniqueness)을 유지하기 위해 항상 HashMap이 HashSet보다 선호된다.
휴, 기나 긴 여정이었다.
정말 많은 공부가 되었다.
끝!
'Study > Java' 카테고리의 다른 글
[Java] removeIf 사용법 (0) | 2022.04.01 |
---|---|
[Java] Java의 Garbage Collection - Generational GC, G1 GC (3) | 2021.05.10 |
[Java] HashMap, HashSet 이란? - (4) HashSet이란? (0) | 2021.03.31 |
[Java] HashMap, HashSet 이란? - (3) HashMap이란? (0) | 2021.03.27 |
[Java] HashMap, HashSet 이란? - (2) Set, Map 이란? (0) | 2021.03.22 |