Употреба ТДицтионари-а за Хасх Табеле у Делфима

Представљен у Делпхију 2009 ТДицтионари класа, дефинисано у Генерику. Јединица колекција, представља генеричку колекцију врста парова кључа и вриједности.

Генерички типови, такође уведен у Делпхи 2009, омогућава вам дефинисање класа које не дефинишу посебно врсту чланова података.

Речник је на неки начин сличан низу. Ин ан низ радите са серијом (збирком) вредности индексираних целом вредностом, која може бити било која редна вредност типа. Овај индекс има доњу и горњу границу.

У речнику можете да похраните кључеве и вредности где било који могу бити било које врсте.

Конструктор ТД-а

Отуда и изјава конструктора ТДицтионари:

У Делфима је ТДицтионари дефинисан као хасх табела. Хасх табеле представљају скуп парова кључа и вредности који су организовани на основу хасх кода кључа. Хасх табеле су оптимизоване за претраживања (брзина). Када се пар кључ-вредност дода у хасх табелу, хеш кључ се израчунава и чува заједно са додатим паром.

ТКеи и ТВалуе, јер су генерички, могу бити било које врсте. На пример, ако информације које треба да сачувате у речнику долазе из неке базе података, ваш кључ може бити ГУИД (или неке друге вредности које представљају јединствени индекс) вредности, док вредност може бити објект пресликан у низ података у вашој бази података столови.

instagram viewer

Коришћење ТДицтионари-а

Ради једноставности, доњи пример користи целе бројеве за ТКеис и карактере за ТВалуес.

Прво изјављујемо наш речник тако што ћемо одредити које ће врсте ТКеи и ТВалуе бити:

Тада се речник попуњава методом Адд. Будући да речник не може имати два пара са истом кључном вредношћу, помоћу методе ЦонтаинсКеи можете проверити да ли је неки пар вредности вредан кључа већ унутар речника.

Да бисте уклонили пар из речника, користите методу Уклони. Ова метода неће узроковати проблеме ако пар с наведеним кључем није дио рјечника.

Да бисте прошли кроз све парове претраживањем кључева можете да урадите фор ин лооп.

Користите методу ТриГетВалуе да бисте проверили да ли је неки пар кључева и вредности укључен у речник.

Сортирање речника

Будући да је речник хасх табела, он не смешта ставке у дефинисаном редоследу сортирања. Да бисте понављали кључеве који су сортирани према вашим специфичним потребама, искористите ТЛист - генерички тип колекције који подржава сортирање.

Горњи код сортира кључеве узлазно и силазно и узима вредности као да су смештене у поредани редослед у речнику. Силазно сортирање вредности кључа целог броја типа користи ТЦомпарер и анонимни метод.

Када су кључеви и вредности типа ТОбјецт

Горе наведени пример је једноставан јер су и кључ и вредност једноставни типови. Можете имати сложене речнике у којима су и кључ и вредност „сложени“ типови попут записа или објеката.

Ево још једног примера:

Овде се користи прилагођени запис за кључ, а прилагођени објект / класа користи се за вредност.

Обратите пажњу на употребу специјализованог ТОбјецтД Дицтионари класа овде. ТОбјецтДицтионари може аутоматски обрадити животни вијек објеката.

Вредност Кеи не може бити нула, док вредност Валуе може.

Када се ТОбјецтДицтионари идентифицира, параметар Овнерсхипс специфицира да ли рјечник посједује кључеве, вриједности или обоје - и зато вам помаже да нема цурења меморије.