[Delphi:90759] Generics.Collections

405 views
Skip to first unread message

中村拓男

unread,
Sep 30, 2008, 3:33:01 AM9/30/08
to Del...@ml.users.gr.jp
中村@ブレーンです。

ヘルプに全く記載が無いので Generics.Collections ユニットのソースを調べて見ました。

Generics 用の主要なクラスは以下の通りです。

1. TArray

動的配列の検索/ソート用のGenericクラスメソッドを提供するクラスです。

2. TList<T>

TList の Generics 版。値型のコレクションを想定しているようです。
内部の実装は array of T です。array[0..MaxListSize - 1] of Pointer
ではなくなったので、要素の削除追加は遅そうです。
オブジェクトを自動破棄する機能はなし。

3. TStack<T>, TQueu<T>

TQueue, TStack の Generics 版。値型を想定しているようです。
内部の実装は array of T です。
オブジェクトを自動破棄する機能はなし。

4. TDictionary<TKey,TValue>

ハッシュテーブルによる辞書です! オープンハッシュのようです。
TKey, TValue の型には何でも使えそうですが、キー、値とも値型が
想定されているようです。

TKey のハッシュ値を取得する仕組みがなかなか面白そうです。型情報から、その型の
デフォルトのIEqualityComparerインターフェースを取得する仕組みがあるので、キーに
文字列型や数値型等の主要な型を使う場合は、ハッシュ関数を用意する必要が無くお手軽に使えます。
この仕組みの実装が Generics.Defaults ユニットです。

オブジェクトを自動破棄する機能はなし。

5. TObjectList<T: class>

TObjectList の Generic 版です。クラス型オブジェクトのコレクションです。
従来どおりオブジェクトを自動破棄する機能が有ります。

6. TObjectQueue<T: class>

 クラス型オブジェクト用の TStack<T>, TQueu<T> です。
オブジェクトを自動破棄する機能が有ります。

7. TObjectDictionary<TKey,TValue>

  クラス型オブジェクト用の TDictionary です。
キーと値の両方にクラス型オブジェクトを使用でき、キーと値の両方を自動破棄する機能があります。
また、キーは値型、値はクラスオブジェクト型といった使い方が可能です。

TDictionary と同様、キーの型の デフォルトのIEqualityComparerインターフェースを取得する
仕組みを持っていますのでお手軽に使えます。


----------
東京都 日野市 中村拓男

Reply all
Reply to author
Forward
0 new messages