Set(세트)
Set(세트)는 우리가 흔히 수학에서 배웠던 집합의 개념과 같다. 즉, 중복되지 않는 항목들이 모인 것을 Set(세트)라한다.
Set는 순서가 없다. 만약, 순서가 필요없고 고유값을 원한다면 Set가 최선의 자료구조이다.
Set의 특징
- 데이터를 비순차적(unordered)으로 저장할 수 있는 자료구조
- 삽입(Insertion) 순서대로 저장되지 않는다.
- 수정이 가능하다
- 동일한 값을 여러번 삽입이 불가능하다. 동일한 값이 여러번 삽입되면 나중에 들어온 값으로 치환된다.
- Fast Lookup 이 필요할 때 사용된다.
- 고유값을 찾고자 할 때 사용된다.
- set는 array에 저장된다(Bucket)
Set의 구조
- Array와 달리 Set는 element들을 순차적으로 저장하지 않는다.
- Set에서 element들이 저장될 때는 다음과 같이 저장된다
1. 저장할 element의 값의 hash 값을 구한다.
- 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을 해야 할 때
- 순서는 상관 없을 때