0Pricing
Swift Academy · レッスン

Array、Dictionary、Setの使い分け

性能特性を理解し、状況に適したコレクション型を選択します。

「Array、Dictionary、Setの使い分け」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

ようこそ

Swiftに組み込まれている3つのコレクション、Array、Dictionary、Setには、それぞれ異なる強みがあります。適切なものを選ぶことは、正しさとパフォーマンスの両方に影響します。

Array:順序付きシーケンス

次のような場合は `Array` を使います。 • 順序が重要 • インデックスによるランダムアクセス `O(1)` が必要 • 重複が許可される • 順番に反復処理する ```swift let steps = ["boil","add tea","steep","drink"] ```

Dictionary:キーと値による検索

次のような場合は `Dictionary` を使います。 • 一意のキーによるO(1)の検索が必要 • データが自然にキーで識別される(ユーザーID、設定キーなど) ```swift var userNames: [Int: String] = [42: "Alice", 7: "Bob"] print(userNames[42]!) // "Alice" ```

Set:一意性の確認

次のような場合は `Set` を使います。 • O(1)のメンバーシップ確認が必要 • 重複を除外する必要がある • 順序が重要ではない ```swift var visitedPages: Set = [] visitedPages.insert("/home") print(visitedPages.contains("/home")) // true ```

パフォーマンスの概要

| 操作 | Array | Dictionary | Set | |-------------------|-------|------------|-------| | 末尾への追加 | O(1)* | O(1)* | O(1)* | | インデックス/キーアクセス | O(1) | O(1)* | — | | 検索 | O(n) | O(1)* | O(1)* | | 中間への挿入 | O(n) | O(1)* | O(1)* | *償却平均

ArrayがSetに勝る場合

小規模なコレクションでは、オーバーヘッドが小さいため、`Set` より `Array` が適していることがよくあります。 ```swift // For 5 items, Array.contains is perfectly fast: let tags = ["swift","ios","mobile"] if tags.contains("swift") { ... } ``` 非常に小さなSetでは、ハッシュ計算の固定オーバーヘッドが支配的になることがあります。

順序付きDictionaryのパターン

キーによる検索と挿入順序の両方が必要な場合は、次のようにします。 ```swift // Use an array of tuples or a struct: var ordered: [(key: String, value: Int)] = [] // Or Foundation's NSOrderedDictionary // Or maintain a [Key] array alongside a [Key:Value] dict ```

マルチセットのパターン

重複した値を数えるマルチセットには、`[T: Int]` を使います。 ```swift var frequency: [String: Int] = [:] for word in words { frequency[word, default: 0] += 1 } ```

不変性:letとvar

3つすべてのコレクションで、不変性を保つために `let` を活用できます。 ```swift let config: [String: String] = ["env": "prod"] let primes: Set = [2,3,5,7,11] let steps: [String] = ["fetch","parse","display"] ``` 不変コレクションを使うと、意図しない変更を防ぎ、コンパイラの最適化も可能になります。

実践的な選択フロー

次のように考えます。 1. 位置による順序付きアクセスが必要ですか? → Array 2. 一意のキーによる検索が必要ですか? → Dictionary 3. 重複なしで高速なメンバーシップ確認が必要ですか? → Set 4. 組み合わせが必要ですか? → たとえばグループ化したデータには `[Key: [Value]]` のように組み合わせます

確認問題

一意のキーによる平均O(1)の検索を提供するコレクションはどれですか?

まとめ

主なポイント: • Array — 順序付き、インデックスアクセス可能、重複を許可します • Dictionary — キーと値のペアを格納し、O(1)で検索できます • Set — 一意の値を格納し、O(1)でメンバーシップを確認できます • 小規模なコレクションでは、ハッシュ計算のオーバーヘッドによりArrayがSetに勝ることがよくあります • 複雑なデータ構造にはコレクションを組み合わせます コースは完了です!次は構造体の設計パターンです。

よくある質問

「Array、Dictionary、Setの使い分け」レッスンは無料ですか?

はい。「Array、Dictionary、Setの使い分け」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「Array、Dictionary、Setの使い分け」で何を学びますか?

性能特性を理解し、状況に適したコレクション型を選択します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Array、Dictionary、Setの使い分け」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 辞書のCRUDとサブスクリプトアクセス
  2. 辞書の反復処理と変換
  3. Setの操作:和集合、積集合、差集合
  4. Array、Dictionary、Setの使い分け
← Swift Academyに戻る