System.Generics.Collections.TDictionary

De RAD Studio API Documentation
Aller à : navigation, rechercher

System.Generics.Collections.TEnumerableSystem.TObjectTDictionary

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> >

Propriétés

Type Visibilité  Source Unité  Parent
class public
System.Generics.Collections.pas
System.Generics.Collections.hpp
System.Generics.Collections System.Generics.Collections


Description

Collection de paires clé-valeur.

TDictionary représente une collection générique de paires clé-valeur.

Cette classe fournit un mappage d'une collection de clés sur une collection de valeurs. Lorsque vous créez un objet TDictionary, vous pouvez spécifier ces paramètres en tant que capacité initiale, opération d'égalité et contenu initial.

Vous pouvez ajouter une clé associée à une valeur correspondante avec la méthode Add ou AddOrSetValue. Vous pouvez retirer des entrées avec Remove ou Clear, ce qui retire toutes les paires clé-valeur. L'ajout ou la suppression d'une paire clé-valeur et la recherche d'une clé sont performantes, proches de O(1), car les clés sont hachées. Une clé ne doit pas être à nil (bien qu'une valeur puisse être à nil) et il doit y avoir une opération de comparaison d'égalité pour les clés.

Vous pouvez tester la présence de clés et de valeurs avec les méthodes TryGetValue, ContainsKey et ContainsValue.

La propriété Items liste toutes les entrées du dictionnaire. Vous pouvez aussi définir et obtenir les valeurs en indexant la propriété Items. Définir la valeur de cette façon redéfinit toute valeur existante.

La classe TObjectDictionary hérite de TDictionary et fournit un mécanisme automatique de libération des objets retirés des entrées du dictionnaire.

Méthodes d'accès

Cette section récapitule les méthodes relatives à la lecture et l'écriture de TDictionary ou TObjectDictionary, y compris l'effet des clés dupliquées lors de l'écriture ou la clé non trouvée lors de la lecture.

Write

Méthode Type d'index   Type de valeur   En cas de clé dupliquée
Add TKey TValue Exception
AddOrSetValue TKey TValue Ecrasement
Items TKey TValue Ecrasement

Read

Méthode Type d'index/type d'entrée   Type de résultat Si la clé n'est pas trouvée Remarques
ContainsKey TKey Booléen false True = trouvée
ContainsValue TValue Booléen n/d True = trouvée
ExtractPair TKey TPair Paire par défaut Renvoie TPair, supprime l'élément du dictionnaire
Items TKey TValue Exception Utilisez TryGetValue pour éviter l'exception.
opérateur [] TKey TValue Exception C++ uniquement
Keys n/d TKeyCollection n/d
ToArray n/d TArray<TPair<TKey,TValue>> n/d
TryGetValue TKey TValue, booléen default, false Renvoie TValue
Values n/d TValueCollection n/d


Iteration

Vous trouverez ci-dessous des exemples de code utilisant l'itération dans le contenu du dictionnaire.

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;
Attention: Lorsque TDictionary est utilisé, utilisez l'espace de nommage System.Generics.Collections.

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);
  }
}
Conseil: Comme C++ peut uniquement générer du code pour les modèles C++, le code doit utiliser des collections STL (std::map) plutôt que des collections de génériques Delphi (TDictionary).
Remarque: Comme C++ ne peut pas instancier de génériques Delphi, le code C++ doit uniquement utiliser les génériques Delphi avec des types pour lesquels un générique a été instancié dans le code Delphi.

Voir aussi

Exemples de code