Post

Swift - 집합(Set)이란? (2)

Swift - 집합(Set)이란? (2)

이전 포스트에서 이어서 진행

집합 연산

  • intersaction: 교집합
    • 두 집합에서 공통적인 데이터를 새로운 집합으로 반환해줌
  • symmetricDifference: 합칩합에서 교집합을 뺀 것
    • 두 집합에서 각 집합이 가진 공통된 데이터를 제외한 데이터를 새로운 집합으로 반환해줌
  • union: 합집합
    • 두 집합에 데이터를 합쳐서 새로운 집합을 반환해줌
  • subtract: 차집합
    • 위 메서드들과는 달리 메서드를 호출하는 집합의 데이터를 기준으로 호출하는 집합만 가지고 있는 데이터만 남기고 나머진 다 날림

intersaction 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex1.intersection(ex2))

결과

1
[4, 2, 5, 3]

집합은 순서를 보장하지 않기 때문에 출력되는 데이터의 순서는 제각각임.

symmetricDifference 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex1.symmetricDifference(ex2))

결과

1
[1, 7, 6]

union 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex1.union(ex2))

결과

1
[4, 5, 1, 6, 7, 2, 3]

subtract 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex1.subtracting(ex2))

결과

1
[1, 6, 7]

부분 집합 & 포함 여부 확인

  • isSuperset: 해당 메서드를 호출하는 집합이 매개 변수로 넘어오는 집합보다 상위 집합인지 확인
  • isSubset: 해당 메서드를 호출하는 집합이 매개 변수로 넘어오는 집합의 부분 집합인지 확인
  • isStrictSuperset: isSuperset 메서드와 거의 동일하지만, 집합의 데이터가 완전히 동일할 경우 상위 집합으로 취급하지 않고 false를 반환함
  • isStrictSubset: isSubset과 거의 동일하지만, 집합의 데이터가 완전히 동일할 경우 부분 집합으로 취급하지 않고 false를 반환함
  • isDisjoint: 동일 값이 포함된 집합이면 false / 포함되지 않은 집합이면 true 반환

isSuperset 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex1.isSuperset(of: ex2))

결과

1
true

isSubset 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex2.isSubset(of: ex1))

결과

1
true

isStrictSuperset 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex1.isStrictSuperset(of: ex2))

결과

1
true

isStrictSubset 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex2.isStrictSubset(of: ex1))

결과

1
true

isDisjoint 예시

1
2
3
4
var ex1: Set = [1, 2, 3, 4, 5, 6, 7]
var ex2: Set = [2, 3, 4, 5]

print(ex1.isDisjoint(with: ex2))

결과

1
false
This post is licensed under CC BY 4.0 by the author.