Swiftのコレクション検索テクニックを完全解説!初心者でもわかるArray・Dictionary・Setの探し方
生徒
「Swiftでリストや辞書の中から特定の値を探す方法ってありますか?」
先生
「はい、SwiftではArray(配列)やDictionary(辞書)、Set(集合)といったコレクション型で、特定の要素を検索する便利な方法がいくつか用意されています。」
生徒
「たとえば、"りんご"っていう文字があるかどうか調べたりできますか?」
先生
「もちろんできますよ!今日はそのやり方を具体的に見ていきましょう。」
1. Swiftのコレクション型とは?
Swiftには、複数のデータをまとめて扱うための「コレクション型」があります。代表的なものには、以下の3つがあります。
- Array(配列):順番付きで同じ型のデータを格納できる。
- Dictionary(辞書):キーと値のペアでデータを管理できる。
- Set(集合):重複しないデータを集めたもの。順番は保証されない。
これらのコレクションからデータを検索するために、first(where:)やcontains、firstIndex(of:)といった検索テクニックが使われます。
2. Arrayで値を探す|first(where:)・contains・firstIndex(of:)
まずは、Array(配列)での検索方法を見ていきましょう。
2-1. 条件に合う最初の要素を探す:first(where:)
first(where:)は、特定の条件を満たす最初の要素を見つけてくれます。
let fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
if let result = fruits.first(where: { $0.hasPrefix("み") }) {
print("見つかった果物:\(result)")
}
上記の例では、「"み"で始まる果物」を探しています。見つかった場合はその文字列が表示されます。
2-2. 含まれているか確認する:contains
containsは、配列に特定の値が存在するかどうかをtrueまたはfalseで返します。
let fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
if fruits.contains("バナナ") {
print("バナナはリストにあります")
}
とてもシンプルに使えるのが魅力です。
2-3. 値の位置(インデックス)を調べる:firstIndex(of:)
firstIndex(of:)は、配列の中で指定した要素が最初に現れる位置(インデックス)を返します。
let fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
if let index = fruits.firstIndex(of: "みかん") {
print("みかんは\(index)番目にあります")
}
位置を知りたいときに便利です。
3. Dictionaryで値やキーを探す
Dictionaryは、キーと値のセットでデータを管理するコレクションです。検索方法も少し違います。
3-1. キーが存在するか調べる:keys.contains
let prices = ["りんご": 100, "バナナ": 150, "みかん": 120]
if prices.keys.contains("バナナ") {
print("バナナの価格は設定されています")
}
3-2. 値が含まれているか確認する:values.contains
let prices = ["りんご": 100, "バナナ": 150, "みかん": 120]
if prices.values.contains(150) {
print("150円の商品があります")
}
keysとvaluesを使えば、それぞれキー・値に対して検索できます。
4. Setで値を探す|containsがメイン
Setは重複しない値を管理するコレクションです。検索方法はシンプルで、containsを使うのが基本です。
let uniqueFruits: Set = ["りんご", "バナナ", "ぶどう"]
if uniqueFruits.contains("ぶどう") {
print("ぶどうはセットに含まれています")
}
Setは検索が高速なので、大量のデータを扱う場面でよく使われます。
5. コレクション検索の違いを一覧で比較しよう
それぞれの検索方法を用途別に表で比較してみましょう。
| 検索方法 | 使えるコレクション | 用途 |
|---|---|---|
first(where:) |
Array | 条件に合う最初の要素を探す |
contains |
Array / Set / Dictionary | 値やキーが存在するか確認 |
firstIndex(of:) |
Array | 値の位置(インデックス)を調べる |
keys.contains |
Dictionary | 特定のキーがあるか確認 |
values.contains |
Dictionary | 特定の値があるか確認 |
6. 初心者がつまずきやすいポイント
Swiftのコレクション検索でよくあるつまずきポイントも押さえておきましょう。
- nil(ニル)とは?
検索結果が見つからないときはnilが返ってきます。これは「何もない」という意味の特別な値です。 - Optional型に注意
first(where:)やfirstIndex(of:)の戻り値は「Optional(オプショナル)」型になります。中身を取り出すにはif letを使って確認しましょう。 - Setは順番がない
Setには要素の順番がありません。順番に依存する処理には向いていません。