System.Generics.Collections.TDictionary
Delphi
TDictionary<K,V> = class(TEnumerable<TPair<K,V>>)
C++
template<typename K, typename V> class PASCALIMPLEMENTATION TDictionary__2 : public TEnumerable__1<TPair__2<K,V> >
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
class | public | System.Generics.Collections.pas System.Generics.Collections.hpp |
System.Generics.Collections | System.Generics.Collections |
説明
キー/値ペアのコレクション
TDictionary は、キー/値ペアの汎用コレクションを表します。
このクラスは、キーのコレクションから値のコレクションへのマッピングを提供します。TDictionary オブジェクトを作成する際、初期容量、等価演算、初期コンテンツなどのパラメーターを指定できます。
Add メソッドまたは AddOrSetValue メソッドで、対応する値を関連づけるキーを追加することができます。Remove または Clear(すべてのキー/値ペア削除する)でエントリを削除することができます。キー/値ペアの追加や削除、およびキーの検索は、キーがハッシュされるため O(1)に近く効率的です。キーは nil にすることはできず(値は nil になり得ますが)、また、キーには等価比較演算がなければなりません。
TryGetValue、ContainsKey、ContainsValue の各メソッドで、キーや値の存在を確認することができます。
Items プロパティは、すべての辞書のエントリをリストします。また、Items プロパティをインデックス化することで、値を設定および取得することができます。この方法を値を設定すると、既存の値は上書きされます。
クラス TObjectDictionary は TDictionary から派生しており、ディクショナリ エントリからオブジェクトを解放するための自動メカニズムを提供します。
アクセス メソッド
このセクションでは、TDictionary や TObjectDictionary の読み書きのためのメソッドについて概説します。書き込み時のキーの重複の影響や、読み込み時にキーが見つからない場合などについても触れられています。
書き込み
メソッド | インデックスの型 | 値の型 | 重複キーの場合 |
---|---|---|---|
Add | TKey | TValue | 例外 |
AddOrSetValue | TKey | TValue | 上書き |
Items | TKey | TValue | 上書き |
読み込み
メソッド | インデックス/入力の型 | 結果の型 | キーが見つからなかった場合 | メモ |
---|---|---|---|---|
ContainsKey | TKey | Boolean | false | True = 見つかった |
ContainsValue | TValue | Boolean | N/A | True = 見つかった |
ExtractPair | TKey | TPair | デフォルトのペア | TPair を返し、アイテムをディクショナリから削除 |
Items | TKey | TValue | 例外 | TryGetValue を使用すると例外を回避できる |
operator [] | TKey | TValue | 例外 | C++ のみ |
Keys | N/A | TKeyCollection | N/A | |
ToArray | N/A | TArray<TPair<TKey,TValue>> | N/A | |
TryGetValue | TKey | TValue, Boolean | デフォルト、false | TValue を返す |
Values | N/A | TValueCollection | N/A |
反復処理
以下に、いくつかの例を示します。コードでは、辞書のコンテンツを繰り返し使用しています。
Delphi
uses System.Generics.Collections;
procedure TForm1.Button1Click(Sender: TObject);
var
MyDict: TDictionary<string, TForm>;
begin
MyDict:= TDictionary<string, TForm>.Create;
try
MyDict.Add('Form1', Self);
for var Enum in MyDict do
ShowMessage(Enum.Key);
finally
MyDict.Free;
end;
end;
C++
#include <memory>
#include <system.Generics.Collections.hpp>
void __fastcall TForm2::Button1Click(TObject *Sender)
{
std::unique_ptr<TDictionary__2<String, String>>
strdict(new TDictionary__2<String, String>());
strdict->Add("Form1", "A Value");
for(const TPair__2<String,String> &pair: strdict.get()) {
ShowMessage(pair.Value);
}
}
関連項目
- Data.DBXCommon.TKey
- System.Rtti.TValue
- System.Generics.Collections.TDictionary.TKeyCollection
- System.Generics.Collections.TDictionary.TValueCollection
- System.Generics.Collections.TObjectDictionary
- System.Generics.Collections.TDictionary.Count
- System.Generics.Collections.TDictionary.Items
- System.Generics.Collections.TDictionary.Add
- System.Generics.Collections.TDictionary.AddOrSetValue
- System.Generics.Collections.TDictionary.Clear
- System.Generics.Collections.TDictionary.ContainsKey
- System.Generics.Collections.TDictionary.ContainsValue
- System.Generics.Collections.TDictionary.Remove
- System.Generics.Collections.TDictionary.TryGetValue