Jupyo's Daily Story
콜렉션 타입(Collection Type) - 집합(Set) 본문
728x90
반응형
집합(Set)은 고유한 값들의 모음으로, 중복된 값을 허용하지 않는 데이터 구조입니다. 데이터의 값이 중복되지 않고, 순서가 중요하지 않은 경우에 사용됩니다.
고유한 특성
- 가변성: Swift의 집합은 가변적이며, 필요에 따라 크기를 조정할 수 있습니다.
- 타입 안정성: 집합은 지정된 데이터 타입의 값만 포함할 수 있습니다.
- 성능: 집합은 대량의 데이터를 효율적으로 관리하고, 포함 여부를 빠르게 검사할 수 있는 특징을 가집니다.
집합 생성
요소 생성
// 빈 집합 생성
var emptySet: Set<String> = []
// 초기화 집합
var fruits: Set = ["Apple", "Banana", "Orange"]
요소 추가
fruits.insert("Peach") // ["Apple", "Banana", "Orange", "Peach"], 순서는 동일하지 않음
요소 삭제
fruits.remove("Banana") // ["Apple", "Orange", "Peach"], 순서는 동일하지 않음
요소 접근
집합의 요소에 직접 인덱스로 접근할 수는 없지만, for-in 루프를 사용하여 순회할 수 있습니다.
for fruit in fruits {
print(fruit)
}
집합 연산 수행 (Performing Set Operations)
합집합(union)
두 집합의 모든 요소를 포함합니다.
let setA: Set = ["Apple", "Banana", "Melon"]
let setB: Set = ["Melon", "Orange", "Peach"]
let unionSet = setA.union(setB) // ["Apple", "Banana", "Melon", "Orange", "Peach"]
교집합(intersection)
두 집합에서 공통으로 포함된 요소를 포함합니다.
let intersectionSet = setA.intersection(setB) // ["Melon"]
차집합(subtracting)
첫 번째 집합에만 포함된 요소를 포함합니다.
let differenceSet = setA.subtracting(setB) // ["Apple", "Banana"]
대칭 차집합(symmetricDifference)
공통으로 포함된 요소를 제외합니다.
let symmetricDifferenceSet = setA.symmetricDifference(setB)
// ["Apple", "Banana", "Orange", "Peach"]
집합 멤버십과 동등성
- == : 두 집합이 같은 값을 모두 포함하고 있는지 판단합니다.
- isSubset(of: ) : 집합이 특정 집합에 모든 값이 포함되어 있는지 판단합니다.
- isSuperset(of: ) : 집합에 특정 집합에 모든 값을 포함 하는지 판단합니다.
- isStrictSubset(of: )와 isStrictSuperset(of: ) : 집합이 특정 집합과 같지 않고 부분집합인지 초집합인지 판단합니다.
- isDisjoint(with: ) : 두 집합이 공통 값이 없는지 판단합니다.
let houseAnimals: Set = ["🐶", "🐱"]
let farmAnimals: Set = ["🐮", "🐔", "🐑", "🐶", "🐱"]
let cityAnimals: Set = ["🐦", "🐭"]
let isEqual = houseAnimals == cityAnimals
// false
houseAnimals.isSubset(of: farmAnimals)
// true
farmAnimals.isSuperset(of: houseAnimals)
// true
farmAnimals.isDisjoint(with: cityAnimals)
// true
반응형
'Swift' 카테고리의 다른 글
생명주기 (Lifecycle) (2) | 2024.10.14 |
---|---|
콜렉션 타입(Collection Type) - 딕셔너리(Dictionary) (4) | 2024.10.08 |
콜렉션 타입(Collection Type) - 배열(Array) (2) | 2024.10.07 |
ARC (Automatic Reference Counting) (4) | 2024.10.02 |
클로저 (Closures) (3) | 2024.10.02 |