[Data Structure] Set(세트)

황인용·2020년 1월 20일

Set(세트)

Set(세트)는 우리가 흔히 수학에서 배웠던 집합의 개념과 같다. 즉, 중복되지 않는 항목들이 모인 것을 Set(세트)라한다.
Set는 순서가 없다. 만약, 순서가 필요없고 고유값을 원한다면 Set가 최선의 자료구조이다.

Set의 특징

  • 데이터를 비순차적(unordered)으로 저장할 수 있는 자료구조
  • 삽입(Insertion) 순서대로 저장되지 않는다.
  • 수정이 가능하다
  • 동일한 값을 여러번 삽입이 불가능하다. 동일한 값이 여러번 삽입되면 나중에 들어온 값으로 치환된다.
  • Fast Lookup 이 필요할 때 사용된다.
  • 고유값을 찾고자 할 때 사용된다.
  • set는 array에 저장된다(Bucket)

Set의 구조

image.png

  • Array와 달리 Set는 element들을 순차적으로 저장하지 않는다.
  • Set에서 element들이 저장될 때는 다음과 같이 저장된다
    1. 저장할 element의 값의 hash 값을 구한다.
    1. hash값에 해당하는 공간(bucket)에 값을 저장한다.
  • set은 저장하고자 하는 값의 hash값에 해당하는 bucket에 값을 저장하기 때문에 순서가 없다.(no indexing)
  • hash값 기반의 bucket에 저장하기 때문에 중복된 값을 저장할 수 없다
  • hash값을 기반으로 저장하기 때문에 Lookup이 빠르다.
    - Look up : 특정 값을 포함하고 있는지를 확인 하는 것 ex) if 5 in my_set:
    • set의 총 길이와 상관없이 단순히 hash값을 계산한 후 해당 bucket을 확인한다 ex) 0(1)

When To Use Set

  • 중복된 값을 골라내야 할 때 (고유값을 얻고자 할 때)
  • 빠른 Look Up을 해야 할 때
  • 순서는 상관 없을 때
profile
dev_pang의 pang.log

0개의 댓글