반응형
HashMap과 HashSet을 사용하며 두 가지의 차이점에 대해 정리하고 싶었다.
간단하게 정리해보자.
HashMap vs HashSet 차이점
1. 정의
- HashMap : Map Interface의 구현체로 HashTable과 유사한 자료구조로 데이터를 저장한다.
- HashSet : Set Interface의 구현체로, 내부적으로 HashMap을 사용해 데이터를 저장하기 때문에 HashTable과 유사한 자료구조로 데이터를 저장한다고 할 수 있다.
2. 데이터 저장 형태
- HashMap : key-value 형태로 데이터를 저장한다. 각 value들이 key에 mapping되어 있다.
- HashSet : 객체 그 자체를 저장한다. key 값으로는 삽입되는 객체 자체를, 내부 구현 코드에서 필드로 선언한 객체(dummy 객체)를 value 값으로 사용한다.
3. 데이터 삽입 방법
- HashMap : put() 메서드를 사용해 데이터를 삽입한다. key-value 형태의 한 쌍의 데이터를 저장하기 때문에 삽입 연산동안 단 하나의 객체가 생성된다.
- HashSet : add() 메서드를 사용해 사용해 데이터를 삽입한다. 객체 자체를 저장하고, 내부적으로 HashMap을 사용하기 때문에 삽입되는 객체(key 값)와 dummy 객체(value 값), 총 2개의 객체가 삽입 연산 동안 생성된다.
4. 중복 허용 여부
- HashMap : 중복 key는 허용하지 않지만, 중복 value는 허용한다.
- ex) {'a': 1, 'b': 1, 'c': 2} : 가능 / {'a': 1, 'b': 1, 'a': 2} : 불가능
- HashSet : 객체 자체를 저장하는 형태이기 때문에 데이터 중복을 허용하지 않는다.
- ex) {'a', 'b', 'c'}
5. null 허용 여부
- HashMap : 중복 key 값을 허용하지 않기 때문에 단 하나의 null 값을 key 값으로 가질 수 있고, 중복이 허용된 value의 경우 여러 null 값을 가질 수 있다.
- HashSet : 단 하나의 null 값을 가질 수 있다.
6. 성능(속도)
- HashMap : HashSet보다 빠르다.
- HashSet : 오직 객체만 저장 가능해 HashMap보다 느리다.
반응형
'Java' 카테고리의 다른 글
[Java] 코드 특정 구간의 실행 시간 구하기 (0) | 2023.06.14 |
---|---|
[Java] HashMap에 특정 key가 존재하는지 확인하기 (0) | 2023.04.17 |
[Java] new ArrayList<>() 와 Arrays.asList() 차이점 및 비교 (0) | 2022.12.26 |
[Java] 제어자(modifier) (2) - 접근 제어자, 그 외 제어자 (0) | 2022.08.06 |
[Java] 제어자(modifier) (1) - 접근 제어자, 그 외 제어자( + 추상클래스와 인터페이스) (0) | 2022.08.06 |