セット.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()を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。