Java

[Java] Set Collection (HashSet, TreeSet, LinkedHashSet)

Set은 List와 더불어 엄청 자주쓰이는 인터페이스입니다.

둘다 Collection 인터페이스를 기반으로 구현한 클래스이고 List는 선형 자료구조를 구현한 클래스, Set은 비선형 자료를 구현한 클래스로 사용됩니다.

 

오늘은 Set의 인터페이스를 구현한 HashSet, TreeSet, LinkedHashSet에 대해서 알아보겠습니다

 

HashSet

가장 일반적으로 많이 쓰이는 자료구조입니다.

  • 해싱을 사용하여 데이터를 주소에 저장합니다
  • 데이터의 중복을 허용하지 않습니다
  • 데이터의 저장 순서를 보장하지 않습니다
  • 탐색비용은 O(1)로 검색으로 사용하기에 가장 빠릅니다.

TreeSet

이진탐색트리의 형태로 데이터를 저장하는 컬렉션입니다. 이진탐색트리 중에서도 성능을 향상시킨 'red-black tree'로 구현되어 있습니다.

 

레드-블랙 트리(red-black tree)가 뭔가요?

이진탐색트리(binary-search tree)의 일종입니다. 자세한건 여기를 확인해주세요

 

  • 기본적으로 값이 들어가면서 정렬이 됩니다 (기본 오름차순)
  • 따라서 데이터의 추가, 삭제에는 시간이 걸리지만, 검색과 정렬이 뛰어나다는 장점이 있습니다.
  • 데이터의 저장순서는 보장하지 않습니다.

LinkedHashSet

  • 데이터의 저장순서를 보장합니다

 

출처:
- Set 컬렉션 - HashSet, TreeSet, LinkedHashSet
- JAVA의 HashSet, TreeSet