티스토리 뷰

반응형

 

 

 

오늘은 Set, 집합 컬렉션 내에 특정 요소가 포함되는지, 특정 Set의 subSet 혹은 superSet인지 등을 체크하는데 사용되는 유용한 메서드들에 대해서 알아보겠습니다. 👨🏻‍💻

 

 


Set Operations

Set, 집합 컬렉션 수학적인 Set 동작에 관련된 다양한 메서드를 제공하고 있습니다. 예를들자면, Set 내, Set 사이의 요소들 간 요소, 관계를 체크하고 테스트, 반환하는 메서드를 제공합니다. ex) Set A의 멤버들을 Set B에서 포함하고 있는지 유무, 교집합 요소가 어떻게 되는지 등

지금부터 어떤 메서드를 제공하고 있는지 확인해 보겠습니다. 

 

 


contains(_:)

- set이 특정 요소를 포함하고 있는지를 확인하고 싶을때 사용할 수 있습니다. 특정 요소 포함 유무에 따라 Bool타입을 반환합니다. 

 

isSubset(of)

let setA = Set<Int>(1...3) // 1, 2, 3
let setB = Set<Int>(2...3) // 2, 3
print(setB.isSubset(of: setA)) // result : true -> setB is a Subset of setA
print(setA.isSubset(of: setB)) // result : false -> setA is not a Subset of setB

- 특정 Set 컬렉션이 다른 Set 컬렉션을 subSet으로 가지는지를 체크할 때 사용하며, subSet 여부에 따라 Bool 타입을 반환합니다. 가령 [1, 2, 3]의 Set은 [1, 2]라는 subSet을 갖고 있습니다. 그러므로 이 경우(setB.isSubset(of: setA))에는 isSubset의 결과는 true입니다. 

 

isSuperset(of:)

let setA = Set<String>(arrayLiteral: "a", "b", "c") // 1, 2, 3
let setB = Set<String>(arrayLiteral: "b", "c") // 2, 3
print(setB.isSuperset(of: setA)) // result : false -> setB is not a Superset of setA
print(setA.isSuperset(of: setB)) // result : true -> setA is a Superset of setB

- isSuperset(of:)는 isSubset(of:)의 반대라고 보면 됩니다. setA.isSuperset(of: setB)는 setA가 setB의 부모셋, setB의 요소를 포합하고 있는 셋인지를 체크합니다. 이에따라 Bool 타입을 반환합니다. 

 

isStrictSubset(of:)

- isStrictSubset(of:) 메서드는 isSubset(of:) 메서드에서 비교하는 두개의 set이 동일하지 않는지까지 체크하는 메서드입니다. 만약 setA가 setB의 subSet인데 서로 동일한 요소를 갖고 있다면 false를 리턴합니다. 즉, 두개의 set이 동일한 요소 크기를 갖지 않으면서 subSet인지를 체크하는 Bool타입을 반환하는 메서드가 되겠습니다. 

 

isStrictSuperset(of:)

- isStrictSuperset(of:)는 앞서 말한 isSubset(of:), isStrictSubset(of:)와의 관계와 동일하다고 보면 됩니다. 즉, 두개의 셋 크기가 동일하지 않으면서 부모셋(superSet)인지를 체크하며, Bool타입을 반환하는 메서드입니다. 

 

isDisjoint(with:)

- isDisjoint(with:) 메서드는 특정 set이 인자로 설정되는 비교대상 set과 어떠한 교집합 요소도 없을 경우 true를 반환합니다. 즉, 공통 요소가 있는지(false) 없는지(true)에 따라 Bool 타입을 리턴하는 메서드입니다.

 

== 연산자 비교

- '==' 연산자를 통해 두개의 Set 가 동일한 요소를 갖고 있는지 알 수 있습니다.

 


 

이 외에도 Set 집합은 합치고, 제외하고, 제거하고, 다양한 조건의 집합을 리턴하는 메서드를 지원하고 있습니다.
또다른 메서드, 프로퍼티 등에 대해서 이어서 추가로 포스팅 정리하겠습니다.

많은 의견, 피드백 환영합니다. 🤗

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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 29 30
글 보관함