Swift

[Swift] 컬렉션형 - 세트(Set)

💡세트(Set)

같은 타입의 데이터를 순서 없이 하나의 묶음으로 저장하는 형태의 컬렉션 타입입니다.

 

❗️세트 내에는 중복된 값이 존재하지 않으므로 모두 유일한 값입니다.

❗️세트의 요소로는 해시 가능한 값이 들어와야 합니다.

 

해싱(hashing)이란?

각각의 객체에 식별할 수 있는 숫자 코드를 부여하여 객체를 테이블에 저장하는 것을 말합니다.

 

빈 세트 생성하기

var emptySet: Set<Int> = Set<Int>()
var emptySet: Set<Int> = [] // 위와 동일한 표현

배열과 딕셔너리와 달리 줄여서 표현할 수 있는 축약형이 없습니다.

 

세트 생성하고 사용하기

var fruits: Set<String> = ["apple", "melon", "peach", "apple"]

// 요소의 개수 확인
print(fruits.count) // 3 // 중복된 값 허용하지 않음 (apple 중복)

// 비어있는 세트인지 확인
print(fruits.isEmpty) // false

// 세트에 요소 추가
fruits.insert("mango")
fruits.insert("mango")
fruits.insert("mango")
// 동일한 값을 여러번 삽입해도 한 번만 저장됨
print(fruits) // ["melon", "mango", "peach", "apple"]

// 요소 삭제 // 삭제 후 해당 요소 반환
print(fruits.remove("melon")) // melon

print(fruits) // ["mango", "peach", "apple"]

// 요소 정렬
print(fruits.sorted()) // ["apple", "mango", "peach"]

 

세트의 활용 - 집합연산

  • 합집합 - union()
  • 교집합 - intersection()
  • 차집합 - subtracting()
  • 여집합의 합(배타적 논리합) - symmetricDifference()
let setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [4, 5, 6, 7, 8]

// 합집합
print(setA.union(setB)) // [7, 8, 5, 3, 1, 6, 2, 4]

// 교집합
print(setA.intersection(setB)) // [4, 5]

// 차집합
print(setA.subtracting(setB)) // [1, 2, 3]
print(setB.subtracting(setA)) // [8, 6, 7]

// 여집합의 합(배타적 논리합)
print(setA.symmetricDifference(setB)) // [1, 2, 3, 6, 7, 8]

 

세트의 활용 - 포함관계 연산

  • isDisjoint(with: ) - 서로 배타적인지
  • isSubset(of: ) - 부분 집합인지
  • isSuperset(of: ) - 전체 집합인지
let setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [4, 5, 6, 7, 8]
let setUnion: Set = setA.union(setB) // setA와 setB의 합집합

print(setA.isDisjoint(with: setB)) // 서로 배타적인지 - false
print(setA.isSubset(of: setUnion)) // setA가 setUnion의 부분집합인지 - true
print(setUnion.isSuperset(of: setB)) // setUnion이 setB의 전체집합인지 - true

 

딕셔너리(Dictionary)에 대한 설명은 아래 포스팅을 참고해주세요:)

bes24.tistory.com/10

 

[Swift] 컬렉션형 - 딕셔너리(Dictionary)

💡딕셔너리 요소들이 순서 없이 키와 값의 쌍으로 구성되는 컬렉션 타입입니다. ❗️하나의 딕셔너리 안의 키는 같은 이름을 중복해서 사용할 수 없습니다. 빈 딕셔너리 생성하기 // Key가 String

bes24.tistory.com

 

이 글은 Swift 프로그래밍 책을 읽고 내용을 정리하여 작성하였습니다.
728x90

'Swift' 카테고리의 다른 글

[Swift] 함수(Function) - 정의와 호출  (0) 2020.12.29
[Swift] 열거형(Enumeration)  (0) 2020.12.28
[Swift] 컬렉션형 - 딕셔너리(Dictionary)  (0) 2020.12.26
[Swift] 컬렉션형 - 배열(Array)  (0) 2020.12.24
[Swift] 튜플(Tuple)  (0) 2020.12.24