자료구조

HashSet이란?

Z00_HWAN_99 2024. 6. 17. 17:00
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

 

bottomsUp-99 - Overview

Backend Developer. bottomsUp-99 has 10 repositories available. Follow their code on GitHub.

github.com

 

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