共通のリスト操作

提供: Appmethod Topics
移動先: 案内検索

リストの操作 への移動

さまざまなリスト クラスがあり、それぞれで異なる型の項目が格納され、異なる派生元を持っていますが、それらのほとんどで、リスト内の項目を追加、削除、再配置、アクセスするための一連の汎用メソッドを、共有しています。

リスト項目を追加する

ほとんどのリスト クラスには Add メソッドがあり、項目をリストの末尾か(リストがソートされていない場合)、適切な位置に(リストがソートされている場合)追加します。 大抵、Add メソッドは、リストに追加する項目をパラメータとして取り、項目が追加されたリスト内の位置を返します。 バケット リスト(TBucketListTObjectBucketList)の場合、Add は、追加する項目の他に、その項目と関連付けるデータもパラメータとして取ります。 コレクションの場合、Add はパラメータを取らず、追加する項目を新規作成します。 コレクションの Add メソッドは追加した項目を返すので、その新しい項目のプロパティに値を割り当てることができます。

リスト クラスによっては、Insert メソッドを Add メソッドの他に持っているものもあります。 Insert は、Add メソッドと同様に機能しますが、さらにパラメータを持っており、新しい項目を入れたいリストの位置を指定することができます。 Add メソッドを持つクラスであれば、項目位置があらかじめ決定されている場合を除き、Insert メソッドも持っています。 たとえば、ソートされたリストでは、項目はソート順に従わなければならないので、Insert を使用することはできず、また、バケット リストでは、ハッシュ アルゴリズムが項目の位置を決定するので、Insert を使用することはできません。

Add メソッドを持たない唯一のクラスは、順序付きリストです。 順序付きリストは、キューまたはスタックを指します。 順序付きリストに項目を追加する場合には、代わりに Push メソッドを使用します。 Push は、Add のように項目をパラメータとして取り、それを適切な位置に挿入します。

リスト項目を削除する

単一の項目を、あるリスト クラスから削除するには、Delete メソッドまたは 削除メッドを使用します。 Delete は、削除する項目のインデックスをパラメータとして取ります。 Remove もパラメータは 1 つですが、そのパラメータは、削除する項目への参照で、インデックスではありません。 リスト クラスによっては Delete メソッドのみをサポートしたり、別のものは Remove メソッドのみをサポートし、中には両方をサポートするものもあります。

項目の追加と同様、順序付きリストは、その他すべてのリストとは異なる動作をします。 順序付きリストから項目を削除するには、メソッド DeleteRemove を使用する代わりに、Pop メソッドを呼び出します。 削除できる項目は 1 つしかないので、Pop に引数はありません。

リスト内の項目をすべて削除したい場合は、Clear メソッドを呼び出します。 Clear は、順序付きリスト以外のすべてのリストで利用可能です。

リスト項目にアクセスする

すべてのリスト クラスには(TThreadList および順序付きリスト以外)、リスト内の項目にアクセスするためのプロパティがあります。 大抵、このプロパティは Items という名前です。 文字列リストの場合、このプロパティは Strings で、バケット リストの場合、Data です。 これらプロパティ ItemsStringsData は、インデックス付きプロパティで、アクセスしたい項目を指定することができます。

TThreadList では、アクセスする前にリストをロックする必要があります。 リストをロックする際、LockList メソッドは項目へのアクセスに使用できる TList オブジェクトを返します。

順序付きリストは、リストの「一番上の」項目へのアクセスのみ許可します。 この項目への参照は、Peek メソッドを呼び出して取得します。

項目を並び替える

リスト クラスによっては、リスト内の項目群を並び替えるメソッドを持っています。 あるものには、2 つの項目の位置を入れ替える Exchange メソッドが、 あるものには、項目を指定された位置に移動させる Move メソッドが、 そしてあるものには、リスト内の項目群を並び替える Sort メソッドがあります。

どのメソッドが利用可能かを知るには、使用するリスト クラスのオンライン ヘルプを確認してください。

関連項目