言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Swift辞典

  1. トップページ
  2. Swift辞典
  3. セット.insert() / remove() / contains()

セット.insert() / remove() / contains()

対応: Swift 1.0(2014)

Swiftの『Set』は、重複のない要素のコレクションです。順序は保証されず、要素は『Hashable』プロトコルに準拠している必要があります。

構文

// セットの宣言と初期化
var set: Set<String> = ["item_a", "item_b", "item_c"]
var emptySet = Set<Int>() // 空のセット
var set2: Set = ["a", "b", "c"] // 型推論

// 要素の存在確認
set.contains("item_a") // true

メソッド一覧

メソッド / プロパティ概要
セット.insert(_:)要素を追加します。追加成功かどうかと、追加または既存の要素を返します。
セット.remove(_:)指定した要素を削除し、削除した要素を Optional で返します。
セット.removeAll()全要素を削除します。
セット.contains(_:)要素が含まれるか Bool で返します。
セット.count要素数を返します。
セット.isEmptyセットが空かどうかを Bool で返します。
セット.update(with:)要素を追加・置換し、置き換えた古い要素を Optional で返します。

サンプルコード

Setへの要素の追加・削除と集合操作の基本を確認するサンプルコードです。

sample_set_insert_remove.swift
// セットの作成
var members: Set<String> = ["item_a", "item_b", "item_c"]
print("初期: \(members)")

// insert: 追加(戻り値でSuccess確認)
let (inserted, member) = members.insert("item_d")
print("item_d追加: \(inserted ? "成功" : "既に存在") - \(member)")

// 重複を追加しようとした場合
let (inserted2, _) = members.insert("item_a")
print("item_a再追加: \(inserted2 ? "成功" : "既に存在")")

// contains: 存在確認
print("item_b あり: \(members.contains("item_b"))")
print("item_e あり: \(members.contains("item_e"))")

// remove: 削除
if let removed = members.remove("item_b") {
    print("削除: \(removed)")
}
print("削除後: \(members)")

// count / isEmpty
print("要素数: \(members.count)")
print("空: \(members.isEmpty)")

// for-in でのイテレーション(順序は不定)
print("一覧:")
for member in members.sorted() {
    print("  \(member)")
}

実行すると次のように出力されます。

swift sample_set_insert_remove.swift
初期: ["item_a", "item_b", "item_c"]
item_d追加: 成功 - item_d
item_a再追加: 既に存在
item_b あり: true
item_e あり: false
削除: item_b
削除後: ["item_a", "item_c", "item_d"]
要素数: 3
空: false
一覧:
  item_a
  item_c
  item_d

Set は順序を保証しないため、print("初期: \(members)")print("削除後: \(members)") の出力順序は実行ごとに異なる場合があります。

概要

『Set』は重複を自動的に除外するコレクションです。配列に重複が含まれていても『Set(配列)』で変換すると重複が除去されます。

『insert(_:)』の戻り値は『(inserted: Bool, memberAfterInsert: Element)』のタプルです。要素がすでに存在する場合は既存の要素が返されます。Set の要素は Hashable に準拠している必要があります。カスタム型を使う場合は Hashable への準拠が必要です。

セット同士の集合演算についてはセット.union() / intersection() / subtracting()を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。