Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
セット.insert() / remove() / contains()
Swiftの『Set』は、重複のない要素のコレクションです。順序は保証されず、要素は『Hashable』プロトコルに準拠している必要があります。
構文
// セットの宣言と初期化
var set: Set<String> = ["apple", "banana", "cherry"]
var emptySet = Set<Int>() // 空のセット
var set2: Set = ["a", "b", "c"] // 型推論
// 要素の存在確認
set.contains("apple") // true
メソッド一覧
| メソッド / プロパティ | 概要 |
|---|---|
| セット.insert(_:) | 要素を追加します。追加成功かどうかと、追加または既存の要素を返します。 |
| セット.remove(_:) | 指定した要素を削除し、削除した要素を Optional で返します。 |
| セット.removeAll() | 全要素を削除します。 |
| セット.contains(_:) | 要素が含まれるか Bool で返します。 |
| セット.count | 要素数を返します。 |
| セット.isEmpty | セットが空かどうかを Bool で返します。 |
| セット.update(with:) | 要素を追加・置換し、置き換えた古い要素を Optional で返します。 |
サンプルコード
// セットの作成
var fruits: Set<String> = ["apple", "banana", "cherry"]
print("初期: \(fruits)")
// insert: 追加(戻り値でSuccess確認)
let (inserted, member) = fruits.insert("grape")
print("grape追加: \(inserted ? "成功" : "既に存在") - \(member)")
// 重複を追加しようとした場合
let (inserted2, _) = fruits.insert("apple")
print("apple再追加: \(inserted2 ? "成功" : "既に存在")")
// contains: 存在確認
print("banana あり: \(fruits.contains("banana"))")
print("mango あり: \(fruits.contains("mango"))")
// remove: 削除
if let removed = fruits.remove("banana") {
print("削除: \(removed)")
}
print("削除後: \(fruits)")
// count / isEmpty
print("要素数: \(fruits.count)")
print("空: \(fruits.isEmpty)")
// for-in でのイテレーション(順序は不定)
print("一覧:")
for fruit in fruits.sorted() {
print(" \(fruit)")
}
概要
『Set』は重複を自動的に除外するコレクションです。配列に重複が含まれていても『Set(配列)』で変換すると重複が除去されます。
『insert(_:)』の戻り値は『(inserted: Bool, memberAfterInsert: Element)』のタプルです。要素がすでに存在する場合は既存の要素が返されます。Set の要素は Hashable に準拠している必要があります。カスタム型を使う場合は Hashable への準拠が必要です。
セット同士の集合演算についてはセット.union() / intersection() / subtracting()を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。