728x90
반응형
이번 글에서는 제가 백준과 프로그래머스에서 알고리즘을 풀며 자주 나오는 HashSet에 대해서 알려드리는 글을 써보려고 합니다.
이 자료구조는 많은 코딩테스트에도 등장하기도 하니, 많은 분들도 학습하셔서 완벽히 자기 자신의 것으로 만들어가는 시간 가지셨으면 좋겠습니다.
HashSet이란?
- Java에서 제공하는 데이터 구조 중 하나로, 중복된 요소를 허용하지 않고 순서를 보장하지 않는 컬렉션.
HashSet의 장점?
- 중복 요소 제거 : HashSet은 내부적으로 해시 테이블을 사용하여 요소들을 저장하여, 동일한 요소를 중복해서 추가할 수 없음. 이미 존재하는 요소를 추가하거나 삽입하는 경우 무시됨.
- 빠른 검색 속도 : HashSet은 해시 테이블 기반으로 하여 평균적으로O(1)의 시간복잡도로 요소에 접그할 수 있음.
- Null 요소 허용 : HashSet은 null 요소를 하나만 저장할 수 있음. 즉, HashSet 내에는 하나의 null 요소만 존재.
HashSet의 단점?
- 동기화 : HashSet은 스레드 동기화를 지원하지 않음. 따라서 멀티 스레드 환경에서 동시 접근 문제가 발생할 수 있으며, 동기화가 필요한 경우네는 ConcurrentHashMap 또는 Collections.synchronizeSet을 사용.
- 저장 순서 보장 X : HashSet은 요소들의 저장 순서를 보장하지 않음. 따라서 요소들을 추가한 순서나 접근 순서와는 관계없이 저장됨.
HashSet은 주로 중복을 허용하지 않고 고유한 요소를 관리해야 할 때 사용됩니다. 데이터의 삽입 순서나 접근 순서가 중요하지 않고, 검색 속도가 중요한 경우에 매우 유용하게 사용될 수 있습니다.
https://github.com/bottomsUp-99
728x90
반응형
'자료구조' 카테고리의 다른 글
Comparable VS Comparator 의 이해 (0) | 2024.06.30 |
---|---|
ConcurrentHashMap VS ConcurrentSkipListMap 이란? (0) | 2024.06.19 |
AuthProvider VS Provider 이란? (0) | 2024.06.19 |
Map이란? (0) | 2024.06.19 |
HashMap이란? (0) | 2024.06.17 |