Java

[Java] HashMap과 HashSet의 차이

토발자 2022. 12. 23. 01:19
반응형

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보다 느리다.
반응형