320x100
728x90
📌 집합(Sets)
순서와 상관없이 같은 타입의 다른 값을 저장한다.
타입은 반드시 hashable(String, Int, Double, Bool) 이어야 한다.
1️⃣ 집합 생성(초기화)
Set<Element> 으로 작성한다. 저장할 값의 타입을 Element에 지정하면 된다.
var letters = Set<Character>()
배열 리터럴로 집합 생성
집합 타입 Set을 명시해주지 않으면 안된다. 하지만 값 타입은 생략 가능(하나 이상의 값으로 초기화 할 경우)
var genres : Set<String> = ["Rock", "Classic", "Hip Hop"]
// 값 타입 생략
var genres : Set = ["Rock", "Classic", "Hip Hop"]
2️⃣ 집합 요소 추가
letters.insert("a")
// 빈 집합으로 초기화
letters = []
3️⃣ 집합 요소 삭제
remove 사용
/* genres에 Rock이 있으면 제거하고 아니면 nil 반환 */
if let removeGenre = genres.remove("Rock"){
print("\(removeGenre)")
}else{
print("nothing")
}
4️⃣ 집합 특정 요소 포함 확인
contains 사용
if genres.contains("Funk"){
print("Y")
}else{
print("N")
}
// N 출력
5️⃣ 집합 요소 출력 및 정렬
for genre in genres{
print("\(genre)")
}
// Rock
// Classic
// Hip hop
for genre in genres.sorted() {
print("\(genre)")
}
// Classic
// Hip hop
// Rock
6️⃣ 집합 연산 수행
1. 교집합
a.intersection(b)
2. 대칭 차집합
A - B + B - A
a.symmetricDifference(b)
3. 합집합
a.union(b)
4. 차집합
A - B
a.subtracting(b)
let odd: Set = [1, 3, 5, 7, 9]
let even: Set = [0, 2, 4, 6, 8]
let prime: Set = [2, 3, 5, 7]
odd.union(even).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
odd.intersection(even).sorted()
// []
odd.subtracting(prime).sorted()
// [1, 9]
odd.symmetricDifference(prime).sorted()
// [1, 2, 9]
👇 아래는 true or false를 반환하는 집합 연산자이다.
5. 부분집합
a가 b의 부분집합인지
a.isSubset(of:b)
6. 초집합
a가 b를 포함하는지
a.isSuperset(of:b)
7. 교집합
a와 b의 공통 값이 있는 지
a.isDisjoint(with:b)
728x90
반응형
'IOS > Swift' 카테고리의 다른 글
[Swift] 제어 변경 구문과 guard 구문 (0) | 2022.12.29 |
---|---|
[Swift] 콜렉션(Collection) 타입 (3) - 딕셔너리(Dictionary) (0) | 2022.12.27 |
[Swift] 콜렉션(Collection) 타입(1) - 배열(Array) (0) | 2022.12.27 |
[Swift] 문자열과 문자 (0) | 2022.12.26 |
[Swift] 기본 연산자(Basic Operators) (0) | 2022.12.22 |