코딩테스트를 연습하는 도중 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. 값 삽입 방법
HashSet
은add()
메서드를 사용하여 객체를 저장한다.HashMap
은put()
메서드를 사용하여key
,value
를 형태로 저장한다.
7. 요소 추가 메커니즘
HashSet
은HashMap
개체를 사용하여 요소를 저장하거나 추가한다.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 |
---|