Set + hash set

Jinhoon Yoon·2023년 8월 25일

데이터 구조

목록 보기
6/11

개념

Set

  • 데이터를 저장하는 추상자료형(ADT)
  • 순서를 보장하지 않음
  • 데이터 중복을 허용하지 않음
  • 데이터 조회(search)가 List보다 빠름

언제 쓸까?

  • 중복된 데이터를 제거해야 할 때
  • 데이터의 존재 여부를 확인해야 할 때

구현

Hash Set

  • 해시 테이블(Hash table) 을 사용한 Set의 구현체
  • 그래서 크기 상관없이 데이터 조회가 빠름

Hash table
-일반적으로 테이블의 크기에 상관없이 key를 통해 상수 시간에 빠르게 데이터에 접근

List vs. Set

구현체

  • (array list, linked list) vs. (hash set, linked hash set, tree set)

중복 데이터 저장

  • 가능 vs. 불가능

데이터 조회 속도

  • 상대적으로 느림 vs. 상대적으로 매우 빠름

순서(ordering) 존재

  • 순서 무조건 있음 vs. 구현체에 따라 다름 (hash set은 불가능)

메모리

  • 덜 씀 vs. 더 씀

Set을 사용하는 게 더 적절한 상황이 아니라면, 대부분 List를 사용한다.

데이터들 자체가 이미 중복이 없고,
순서 상관없이 iteration(loop를 돌면서 1번씩 접근) 목적으로만 저장한다면,
List 와 Set 중에서 아무거나 사용해도 괜찮을까?
->
list가 메모리도 적게 쓰고,
구현 특성상 list가 단순해서 iteration이 더 빠르기에,
list(특히 array list)를 쓰는 게 권유함.

0개의 댓글