ヘルプに全く記載が無いので 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インターフェースを取得する
仕組みを持っていますのでお手軽に使えます。
----------
東京都 日野市 中村拓男