2 つの集合を結合する、2 つの集合に共通の値を見つける、あるいは 2 つの集合の値がすべて同じか、一部か、まったく無いかを特定するなどの基本的な集合演算を効率的に実行することができます。

基本的な集合演算

次の図は、2 つの集合 a と b を集合演算した結果に色を付けて表現しています。

image: setVennDiagram_2x
  • intersect(_:) メソッドで、2 つの集合に共通した値だけを持つ集合を生成します。
  • exclusiveOr(_:) メソッドで、いずれか一方の集合にだけある値を持つ集合を生成します。
  • union(_:) メソッドで、両方の集合にあるすべての値を持つ集合を生成します。
  • subtract(_:) メソッドで、指定した集合には無い値を持つ集合を生成します。
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]

oddDigits.union(evenDigits).sort()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersect(evenDigits).sort()
// []
oddDigits.subtract(singleDigitPrimeNumbers).sort()
// [1, 9]
oddDigits.exclusiveOr(singleDigitPrimeNumbers).sort()
// [1, 2, 9]

集合の帰属と同値

次の図は、3 つの集合 abc に共通する部分を重なりで表現しています。集合 a は、集合 b のすべてを含んでいるため、b のスーパーセット(上位集合)です。反対に、集合 b は、b のすべての要素が集合 a によって含まれているので、a のサブセット(部分集合)です。集合 b と集合 c は、共通の要素が無いため、ディスジョイント(素集合)です。

image: setEulerDiagram_2x
  • 等価演算子 (==) で、2 つの集合の値がすべて同じかを確認します。
  • isSubsetOf(_:) メソッドで、集合のすべての値が、指定した集合に含まれているかを確認します。
  • isSupersetOf(_:) メソッドで、集合が、指定した集合のすべての値を含んでいるかを確認します。
  • isStrictSubsetOf(_:) または isStrictSupersetOf(_:) メソッドで、集合が、指定した集合のサブセットまたはスーパーセットで、かつ等価でないことを確認します。
  • isDisjointWith(_:) メソッドで、2 つの集合に共通の値がまったく無いことを確認します。
let houseAnimals: Set = ["🐶", "🐱"]
let farmAnimals: Set = ["🐮", "🐔", "🐑", "🐶", "🐱"]
let cityAnimals: Set = ["🐦", "🐭"]

houseAnimals.isSubsetOf(farmAnimals)
// true
farmAnimals.isSupersetOf(houseAnimals)
// true
farmAnimals.isDisjointWith(cityAnimals)
// true

Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.