본문 바로가기

java

HashMap vs HashSet in Java

코딩테스트를 연습하는 도중 hash를 사용하는 문제를 풀다 HashMap이 더 성능이 좋다는 것을 배우게 되어 내용을 정리해보려고 한다.

HashSet이란?

  • Set 인터페이스를 구현하고, 중복 개체를 가지지 않는 컬렉션 프레임워크이다.
  • equals(), hashCode() 를 재정의해야 중복 여부를 체크할 수 있다.
  • Thread Safe 하지 못하고 동기화하지 않는다.public boolean add(Object obj)
    고유한 값이 추가될 경우 true를 반환하고, 중복된 값을 추가할 경우 false를 반환한다.

HashMap이란?

  • Map 인터페이스를 구현하고, 키를 값에 매핑하는 해시 테이블이다.
  • 중복 키를 허용하지 않지만 중복 값을 허용한다
  • Thread Safe하지 못하고 동기화하지 않는다.
  • 중복값null 값을 허용한다 (출처 문서가 잘못되어 있음)public Object put(Object key, Object value)
    요소를 추가하려면 키와 값을 추가해야 한다.

HashSet vs HashMap

1. 구현 계층 (HashSet vs HashMap)

2. Data Storage

  • HashSet은 데이터를 객체 형태로 저장한다.
  • HashMap 은 데이터를 key, value로 저장하며, key를 사용하여 값을 검색한다.

3. 중복 값

  • HashSet은 중복 값을 허용하지 않습니다.
  • HashMap은 중복 키는 허용하지 않지만, 중복 값은 허용한다(출처 문서 잘못되어 있음). 중복된 키가 사용되는 경우 새 key, value가 저장된다.

4. Null 값

  • HashSet은 단일 null 값을 허용한다. null값을 추가한 후 더 이상 null 값을 추가할 수 없다.
  • HashMap은 여러 null 값을 허용하지만 단일 null 값을 허용한다.

5. 내부 구현

  • HashSet은 내부적으로 HashMap을 구현하지만 HashMap은 그렇지 않다.

6. 값 삽입 방법

  • HashSetadd()메서드를 사용하여 객체를 저장한다.
  • HashMapput()메서드를 사용하여 key, value를 형태로 저장한다.

7. 요소 추가 메커니즘

  • HashSetHashMap 개체를 사용하여 요소를 저장하거나 추가한다.
  • HashMap은 내부적으로 해싱 방법을 사용하여 요소를 저장한다.

8. 퍼포먼스

  • HashMap고유 키를 가지고 값을 액세스하기 때문에 HashSet보다 빠르다. 각 값을 해당 키로 저장하며 반복하는 동안 키를 사용하여 이러한 값을 더 빠르게 검색할 수 있습니다.

언제 어디에 사용하는 것이 좋은가

  • 컬렉션 내 객체 고유성을 유지하려면 HashSet을 사용하고 다른 경우에는 모든 성능이 우수한 HashMap을 사용한다.

 

출처 : 

https://codippa.com/java-hashset-class/

https://programmertoday.com/java-hashmap-class/
https://techvidvan.com/tutorials/hashmap-vs-hashset-in-java/

'java' 카테고리의 다른 글

[generic] raw type 사용을 지양하자  (0) 2022.03.20