Шаблон словаря TDictionaryo

В заключительном разделе главы познакомимся с весьма неординарным шаб­лоном— словарем TDictionaryo. Словарь ОПИСан В модуле System.Generics. Collections и, как и положено любому словарю, предназначен для обслуживания пар ’’ключ — значение”, поэтому в его объявлении присутствуют два обобщенных типа^- TDictionary<TKey, TVaiue>. Ключ в словаре должен быть уникален, благода­ря этому осуществляется быстрый и однозначный поиск соответствующего ему значения.

Класс вооружен несколькими конструкторами, простейший из них

constructor Create(ACapacity: Integer =0); overload;

при создании экземпляра класса в аргументах не нуждается (он создаст пустой сло­варь), передав в конструктор любое положительное значение. Мы заранее распре­делим объем словаря, чем ускорим процесс его заполнения.

Для добавления в словарь новой пары "ключ — значение” используют метод

 

procedure Add(const Key: TKey; const Value: TValue);

 

Внимание!
В соответствии со своим предназначением словари недолюбливают совпадение клю­чей, поэтому при вставке новой пары с помощью метода Add() вероятно возникнове­ние исключительной ситуации!

 

Если вы намерены просто изменить значение для определенного ключа, то реко­мендую процедуру

procedure AddOrSetValue(const Key: TKey; const Value: TValue);

Метод находит ключ Key и заменяет его значение на value, если же заданный ключ отсутствует, то процедура заработает как рассмотренный ранее метод Add () — до­бавит в словарь новую пару.

Свойства с традиционными названиями

p

	roperty Count: Integer;
	property Items[const Key: TKey]: TValue;

 

позволят соответственно узнать число элементов в словаре и получить доступ к элементу по его индексу, но заметьте, что на этот раз индекс Key универсален и может быть задан практически любым типом данных.

Изъятие из словаря пары по ключу осуществит процедура

procedure Remove(const Key: TKey);

Метод

 

function ExtractPair(const Key: TKey):TPair<TKey,TValue>;

также исключит пару из словаря, но на этот раз даст возможность программисту прочитать ключ/значение.

Полная очистка словаря осуществляется процедурой

procedure Clear;

Пара очень быстрых методов проверит наличие в словаре ключа

function ContainsKey(const Key: TKey): Boolean; и значения

function ContainsValue(const Value: TValue): Boolean; и в случае успеха они возвратят true.

Для быстрого доступа к значению по его ключу вызываем функцию

function TryGetValue(const Key: TKey; out Value: TValue): Boolean;

В случае наличия в словаре пары, описываемой ключом Key, в выходной параметр value поступит соответствующее ключу значение.

Традиционное для большинства классов-шаблонов свойство

function ToArray: TArray<TPair<TKey, TValue»;

позволит представить словарь в виде массива.

 

Замечание
Класс TDictionary<T> в разы быстрее, чем полюбившийся многим программистам список строк TStringList! Поэтому в своих новых программах по возможности отда­вайте предпочтение TDictionary<T>.
 

dle

Помоги проекту! Расскажи друзьям об этом сайте: