Swift の Set(セット)部分集合・上位集合・交わるか

ここでは Swift の二つの Set(セット)が、部分集合か、上位集合か、交わるかなどの判定する方法についてご説明します。


== で二つの Set(セット)が等しいか判断する

Swift の二つの Set(セット)が等しいかどうかは == を使って判断することができます。

その時に、Set の要素の順番は等しいかどうかには関係ありません。

let set1: Set = [1, 2, 3, 4, 5, 6, 7, 8]
let set2: Set = [3, 6, 9, 12]
let set3: Set = [4, 7, 6, 5, 8, 2, 1, 3]

print(set1 == set2)
print(set1 == set3)

実行結果は次のようになり、set1 と set2 は要素が違うので false、set1 と set3 は要素が同じなので true になっています。

false
true

Swift の Set(セット)部分集合・上位集合・交わるか 1


isSubset() で Set(セット)が部分集合か判断する

Swift の Set(セット)の isSubset() メソッドを使って、引数に指定した Set の部分集合かどうかを判断することができます。

isSubset() は二つの Set の要素が同じ時に true を返しますが、同じ時は false にしたい時は isStrictSubset() メソッドを使います。


それでは、isSubset() と isStrictSubset() を使って、set1 が他の Set の部分集合かどうか確認してみます。

let set1: Set = [1, 2, 3, 4]
let set2: Set = [4, 2, 3, 1]
let set3: Set = [1, 2, 3, 4, 5]
let set4: Set = [2, 3, 4, 5, 6]

print(set1.isSubset(of: set2))
print(set1.isStrictSubset(of: set2))
print(set1.isSubset(of: set3))
print(set1.isSubset(of: set4))

実行結果は次のようになります。 isSubset() のほうは、set1 が引数に渡したセットと同じか部分集合の時は true になっています。set1 と set2 は同じなので isStrictSubset() を使うと false になっています。

true
false
true
false

isSuperset() で Set(セット)が上位集合か判断する

Swift の Set(セット)の isSuperset() メソッドを使って、引数に指定した Set の上位集合(スーパーセット)かどうかを判断することができます。

isSuperset() は二つの Set の要素が同じ時に true を返しますが、同じ時は false にしたい時は isStrictSuperset() メソッドを使います。


それでは、isSuperset() と isStrictSuperset() を使って、set1 が他の Set の上位集合かどうか確認してみます。

let set1: Set = [1, 2, 3, 4, 5]
let set2: Set = [5, 2, 4, 3, 1]
let set3: Set = [1, 2, 3, 4]
let set4: Set = [3, 4, 5, 6]

print(set1.isSuperset(of: set2))
print(set1.isStrictSuperset(of: set2))
print(set1.isSuperset(of: set3))
print(set1.isSuperset(of: set4))

実行結果は次のようになります。 isSuperset() のほうは、set1 が引数に渡したセットと同じか上位集合の時は true になっています。set1 と set2 は同じなので isStrictSuperset() を使うと false になっています。

true
false
true
false

isDisjoint() で Set(セット)に交わりがないか判断する

Swift の Set(セット)の isDisjoint() メソッドを使って、二つのセットが交わっていないか判断することができます。

二つのセットの要素の中に、ひとつでも同じ要素があった場合は false を返します。


それでは、isDisjoint() を使って、set1 が他の Set と交わるか確認してみます。

let set1: Set = [1, 2, 3, 4, 5]
let set2: Set = [6, 7, 8]
let set3: Set = [5, 6, 7]

print(set1.isDisjoint(with: set2))
print(set1.isDisjoint(with: set3))

実行結果は次のようになります。 set1 と set2 は同じ要素がないので true、set1 と set3 は 5 という同じ要素があるので false を返しています。

true
false

以上、Swift の二つの Set(セット)が、部分集合か、上位集合か、交わるかなどの判定する方法についてご説明しました。

© 2024 iOS 開発入門