728x90
세트(set)
세트는 같은 타입의 데이터를 순서 없이 하나의 묶음으로 저장하는 형태의 컬렉션 타입입니다.
순서가 중요하지 않거나 각 요소가 유일한 값이어야 하는 경우에 사용합니다.
세트의 선언과 생성
var names: Set<String> = Set<String>()
var names2: Set<String> = []
var names3: Set<String> = ["kemi", "chulso", "younghee", "kemi"]
// 중복이 제거된 값이 들어감
print(names3.count) //3
names3.insert("jenny")
print(names3) //["chulso", "younghee", "jenny", "kemi"]
세트의 사용
var names: Set<String> = Set<String>()
var names2: Set<String> = []
var names3: Set<String> = ["kemi", "chulso", "younghee", "kemi"]
// 중복이 제거된 값이 들어감
print(names3.count) //3
names3.insert("jenny")
print(names3) //["chulso", "younghee", "jenny", "kemi"]
print(names3.remove("kemi")) //Optional("kemi")
print(names3) //["chulso", "younghee", "jenny"]
// 세트는 자신 내부의 값들이 모두 유일함을 보장함으로, 집합관계를 표현하고자 할 때 유용하게 쓰일수 있습니다.
let englishClassStudents: Set<String> = ["john", "chulsoo", "kemi"]
let koreanClassStudents: Set<String> = ["jenny", "kemi", "chulsoo", "hana", "minsoo"]
// 교집합
let intersectSec: Set<String> = englishClassStudents.intersection(koreanClassStudents)
print(intersectSec) //["chulsoo", "kemi"]
// 여집합
let symmetricDiffSet: Set<String> = englishClassStudents.symmetricDifference(koreanClassStudents)
print(symmetricDiffSet) //["jenny", "john", "minsoo", "hana"]
// 합집합
let unionSet: Set<String> = englishClassStudents.union(koreanClassStudents)
print(unionSet) //["chulsoo", "jenny", "hana", "kemi", "minsoo", "john"]
// 차집합
let subtracSet: Set<String> = englishClassStudents.subtracting(koreanClassStudents)
print(subtracSet) // ["john"]
// 정렬
print(unionSet.sorted()) // ["chulsoo", "hana", "jenny", "john", "kemi", "minsoo"]
세트의 활용 - 포함관계 연산
let 새: Set<String> = ["비둘기", "닭", "기러기"]
let 포유류: Set<String> = ["사자", "호랑이", "곰"]
let 동물: Set<String> = 새.union(포유류)
print(새.isDisjoint(with: 포유류)) // 서로 배타적인지 - true
print(새.isSubset(of: 동물)) // 새가 동물의 부분집합인가요 = true
print(동물.isSuperset(of: 포유류)) // 동물은 포유류의 전체 집합인가요 = true
print(동물.isSuperset(of: 새)) //동물은 포유류의 전체 집합인가요 = true
set은 자바스크립트에서도 존재해서 익숙하긴 했는데, 빅데이터의 영향인가 일반적으로 쓰이지 않을 거 같은 데이터관리 set 메서드들이 많이 존재하는것 같다. 배열에선 랜덤으로 요소를 선택하는 randomElement나 뒤섞는 shuffle() 메서드도 존재한다.
반응형
'Swift > Swift 기본문법' 카테고리의 다른 글
| Swift 기본 문법 - 6. 연산자 (0) | 2022.01.15 |
|---|---|
| 스위프트 기본문법 - 5. 세트(Set) (0) | 2022.01.14 |
| Swift 기본 문법 - 4. 딕셔너리(dictionary) (0) | 2022.01.13 |
| Swift 기본 문법 - 4. 컬렉션형(배열) (0) | 2022.01.13 |
| Swift 기본 문법 - 3. 데이터 타입 (0) | 2022.01.12 |
