序文
Core Foundation のコレクションオブジェクトは、事実上すべての型のデータの "数量" を格納し、整理し、検索するのに役立ちます。このトピックでは、例えば、配列、セット、または辞書などの他の型のオブジェクトをグループ化するためのオブジェクトについて説明します。
Core Foundation を基盤とする機能を使う開発者は、コレクションの仕組みを理解する必要があります。
この文書の構成
コレクションオブジェクトは、迅速かつ正確な検索のためにデータを整理することに加えて、プログラミングにいくつかの利点をもたらします。
- それらを使用すると、格納したデータの型に合わせてコレクションの自動動作をカスタマイズできます (コレクションのカスタマイズ)。
- それらは、コレクション内のすべてのデータ要素にプログラム定義のロジックを適用することができます (コレクションにプログラム定義関数を適用)。
- コレクションに追加されたデータ要素の一意性を保証できます。
- それらを使用すると、コレクション内のデータ要素を変更 (追加、挿入、削除、ソートなどなど) することができます。
- これらは、文字列オブジェクト (CFString)、数値オブジェクト (CFNumber および CFBoolean)、データオブジェクト (CFData) とともに、Core Foundation のプロパティリストに不可欠です。 詳細については、Core Foundation のプロパティリストプログラミングトピック を参照してください。
Core Foundation は、いくつかの型のコレクションオブジェクトを定義します。
- (不透明型の CFArray の) 配列オブジェクトは、要素を順番に整理します。
- (不透明型の CFDictionary の) Dictionary オブジェクトは、任意のキーを介して要素を識別します。
- (不透明型の CFSet の) Set オブジェクトは、重複がない要素の集合です。
- (不透明型の CFBag の) Bag オブジェクトは、重複が存在しうる要素の集合です。
- (不透明型の CFTree の) ツリーオブジェクトは、要素を階層 (親子) の関係で整理します。
コレクションオブジェクトは、ある程度、値のコンテナです。(この文書では、"値" という語はコレクションに含まれる要素を示しています)。しかし、コレクションがその値をどのように含むか、分配するかには大きな違いがあります。このトピック内の概念の構成は、これらの違いを反映しています。"真のコレクション" (配列、辞書、セット、バッグ) と呼ばれるものは、それらの強い類似点のためにまとめて記述されています。さて、このトピックでは、構造的に真のコレクションとはかなり異なる樹構造について説明します。
コレクション API を使用すると、コレクションオブジェクトを作成したり、値を追加したり、値を抽出したりするなど、コレクションオブジェクトで期待されることを実行できます。CFArray、CFDictionary、CFSet、および CFBag のプログラミングインターフェイスは、それらが何をし、どのように動作するかが非常に似ているため、以下のセクションではこれらのすべての型を議論に含めています。しかし、CFTree オブジェクトのプログラミングインタフェースは、これらのオブジェクトに関連するタスクが 樹構造の作成と使用 で説明されているほど十分に異なります。
次の章