Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

Jupyo's Daily Story

콜렉션 타입(Collection Type) - 집합(Set) 본문

Swift

콜렉션 타입(Collection Type) - 집합(Set)

JangJupyo 2024. 10. 7. 18:30
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
반응형