コレクション(Collection)
コレクションは、Foundation のフレームワークオブジェクトであり、その主な役割は、配列、辞書、集合の形式でオブジェクトを格納することです。
コレクションクラス
主なクラス - NSArray、NSSet、そして NSDictionary は共通していくつもの機能を共有しています:
- それらはオブジェクトのみを保持できますが、オブジェクトは任意の型でありえます。NSArray のインスタンスは、例えば、ネコ、イヌ、またはウォンバット、またはこれらの組み合わせを含むことができます。
- それらは、その内容への強い参照を維持します。
- それらは不変(immutable) ですが、コレクションの内容を変更することができる、変更可能(mutable) なサブクラスを持っています。
- NSEnumerator または高速列挙体を使用して、その内容を反復処理することができます。
- これらは、オブジェクト以外の要素を含むことができます。
- これらは、他のメモリ管理オプションを提供します。
- これらは変更可能(mutable) です。
Cocoa はまた、3つのクラス - NSPointerArray、NSHashTable、および NSMapTable を提供しており - これらのクラスをモデルにしたが、それは次の点で異なります。
ココアコレクションオブジェクトは(いくつかの他の環境でのコレクションとは異なり)、オブジェクトの並べ替えを保持できますので、通常、特定の型のオブジェクトを含む特別なコレクションクラスを作成しなくていいのです。
順序付けスキーム
コレクションは、特定の順序付けスキーム内の他のオブジェクトを格納し、公表します:
- NSArray とその変更可能なサブクラス NSMutableArray は、0 から始まるインデックスを使用しています。
- NSDictionary とその変更可能なサブクラス NSMutableDictionary は、キー値のペアを使用します。
- NSSet とその変更可能なサブクラス NSMutableSet は、オブジェクトの順序付けられていない保持を提供します。
他の環境では、配列は、ベクトル、テーブル、又は リスト と呼ばれています。
NSPointerArray は NSMutableArray をモデルとしていますが、それはまた、(オブジェクトの数に貢献するため) NULL 値を保持できます。また、直接ポインタ配列(伝統的な配列で行うことができないもの) の数を設定できます。
他の環境では、辞書は、ハッシュテーブル 又は ハッシュ·マップ と呼ばれることもあります。
NSMapTable は NSMutableDictionary をモデルにしていますが、別のオプションを提供し、特にガベージコレクション環境では弱い関係をサポートします。
Cocoa も、また NSMutableSet のサブクラス NSCountedSet を提供し、その各オブジェクトがセットに追加された回数のカウントを保持します。
NSHashTable は NSMutableSet をモデルにしていますが、別のオプションを提供し、大部分がガベージコレクション環境では弱い関係をサポートします。
前提条件の記事
(なし)
関連記事
既出の議論
コレクション・プログラミングのトピック
次の章
前の章