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> >
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
class | public | System.Generics.Collections.pas System.Generics.Collections.hpp |
System.Generics.Collections | System.Generics.Collections |
Beschreibung
Sammlung von Schlüssel/Wertepaaren.
TDictionary repräsentiert eine generische Sammlung von Schlüssel/Wertepaaren.
Diese Klasse stellt eine Zuordnung von einer Schlüsselsammlung zu einer Wertesammlung bereit. Wenn Sie ein TDictionary-Objekt erstellen, können Sie Parameter für Anfangskapazität, Gleichheitsoperation und Anfangsinhalt festlegen.
Sie können mit den Methoden Add oder AddOrSetValue einen Schlüssel hinzufügen, der einem entsprechenden Wert zugeordnet ist. Einträge können Sie mit Remove oder mit Clear entfernen (entfernt alle Schlüssel/Wertepaare). Das Hinzufügen und Entfernen eines Schlüssel/Wertepaares und das Nachschlagen eines Schlüssels sind effizient (gegen O(1)), weil Schlüssel in einer Hash-Liste organisiert sind. Ein Schlüssel darf nicht nil sein (obwohl ein Wert nil sein kann), und es muss eine Gleichheitsoperation für Schlüssel vorhanden sein.
Sie können das Vorhandensein von Schlüsseln und Werten mit den Methoden TryGetValue, ContainsKey und ContainsValue testen.
Die Eigenschaft Items führt alle Dictionary-Einträge auf. Durch Indizieren der Eigenschaft Items können auch Werte festgelegt und abgerufen werden. Wird ein Wert auf diese Weise festgelegt, wird ein bereits vorhandener Wert überschrieben.
Die Klasse TObjectDictionary stammt von TDictionary ab und stellt einen automatischen Mechanismus für die Freigabe von Objekten bereit, die aus Dictionary-Einträgen entfernt wurden.
Zugriffsmethoden
Dieser Abschnitt enthält eine Übersicht über die Methoden zum Lesen und Schreiben von TDictionary oder TObjectDictionary, einschließlich der Auswirkung doppelter Schlüssel beim Schreiben oder des Nicht-Findens von Schlüsseln beim Lesen.
Write
Methode | Indextyp | Werttyp | Bei doppeltem Schlüssel |
---|---|---|---|
Add | TKey | TValue | Exception |
AddOrSetValue | TKey | TValue | Überschreiben |
Items | TKey | TValue | Überschreiben |
TryAdd | TKey | TValue | false |
Lesen
Methode | Index/Eingabetyp | Ergebnistyp | Bei Schlüssel nicht gefunden | Bemerkungen |
---|---|---|---|---|
ContainsKey | TKey | Boolean | false | True = gefunden |
ContainsValue | TValue | Boolean | n/a | True = gefunden |
ExtractPair | TKey | TPair | Standardpaar | Gibt TPair zurück, entfernt den Eintrag aus dem Dictionary |
Items | TKey | TValue | Exception | Verwenden Sie TryGetValue, um eine Exception zu vermeiden |
operator [] | TKey | TValue | Exception | Nur C++ |
Keys | n/a | TKeyCollection | n/a | |
ToArray | n/a | TArray<TPair<TKey,TValue>> | n/a | |
TryGetValue | TKey | TValue, Boolean | Standard, false | Gibt TValue zurück |
Values | n/a | TValueCollection | n/a |
Iteration
Im Folgenden finden Sie einige Beispiele, bei denen im Code Iterationen durch den Inhalt des Dictionary verwendet werden.
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);
}
}
Siehe auch
- 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
- System.Generics.Collections.TDictionary.TryAdd