TD Dictionary kasutamine rämpstabelite jaoks Delphis

Tutvustatud Delphi 2009, TD sõnastiku klass, mis on määratletud geneerikas. Kollektsiooniüksus esindab võtmeväärtuse paaride üldist räsitabeli tüüpi kogumit.

Üldised tüübid, mis tutvustati ka Delphi 2009, võimaldavad teil määratleda klassid, mis ei määratle konkreetselt andmeliikmete tüüpi.

Sõnastik sarnaneb teatud mõttes massiiviga. Sisse massiiv töötate väärtuste seeriaga (kollektsiooniga), mida on täisarvu abil indekseeritud, mis võib olla ükskõik milline ordinaalse tüübi väärtus. Sellel indeksil on alumine ja ülemine piir.

Sõnastikus saate salvestada võtmeid ja väärtusi, kus mõlemad võivad olla mis tahes tüüpi.

TD sõnaraamatu ehitaja

Sellest tulenevalt on TDraamatu konstruktori deklaratsioon:

Delphis on TD Dictionary defineeritud räsitabelina. Rihmatabelid tähistavad võtme ja väärtuse paaride kogumit, mis on korraldatud võtme räsikoodi alusel. Kiirustabelid on optimeeritud otsingute jaoks (kiirus). Kui räsitabelisse lisatakse võtme-väärtuse paar, arvutatakse ja salvestatakse võtme räsi koos lisatud paariga.

instagram viewer

Kuna TKey ja TV väärtus on geneerilised tooted, võivad nad olla mis tahes tüüpi. Näiteks kui teave, mida sõnastikusse salvestate, pärineb mingist andmebaasist, võib teie võti olla GUID (või mõni muu väärtus, mis esitab kordumatu indeksi) väärtuse, samas kui väärtus võib olla objekt, mis on kaardistatud teie andmebaasi andmereaga lauad.

TD sõnastiku kasutamine

Allpool toodud näites on lihtsuse huvides kasutatud TKeys täisarvu ja TValues ​​tähiseid.

Esiteks kuulutame meie sõnastiku, täpsustades, millised on TKey ja TValue tüübid:

Seejärel täidetakse sõnastik lisamismeetodi abil. Kuna sõnastikul ei saa olla kahte sama võtme väärtusega paari, saate ContainsKey meetodil kontrollida, kas mõni võtme väärtusega paar on juba sõnastiku sees.

Paari eemaldamiseks sõnaraamatust kasutage meetodit Eemalda. See meetod ei tekita probleeme, kui määratud võtmega paar pole sõnaraamatu osa.

Kõigi paaride läbimiseks klahvide abil saate teha järgmist jaoks silmus.

Kasutage meetodit TryGetValue, et kontrollida, kas sõnaraamatusse on lisatud mõni võtme-väärtuse paar.

Sõnastiku sortimine

Kuna sõnastik on räsitabel, ei salvesta ta üksusi määratletud sortimisjärjestuses. Spetsiifiliste vajaduste järgi sorteeritud võtmete iteratsiooniks kasutage TListi - sorteerimist toetavat üldist kogutüüpi.

Ülaltoodud kood sorteerib võtmed kasvavalt ja kahanevalt ning haarab väärtusi nii, nagu oleksid need sõnastikus järjestatud järjekorras talletatud. Tervistüübi võtmeväärtuste kahanevas sortimises kasutatakse TComparerit ja anonüümset meetodit.

Kui võtmed ja väärtused on TObjekti tüüpi

Ülaltoodud näide on lihtne, kuna nii võti kui ka väärtus on lihtsat tüüpi. Teil võib olla keerulisi sõnaraamatuid, kus nii võti kui ka väärtus on "keerukaid" tüüpe, näiteks kirjed või objektid.

Siin on veel üks näide:

Siin kasutatakse võtme jaoks kohandatud kirjet ja väärtuse jaoks kohandatud objekti / klassi.

Pange tähele spetsialiseeritud kasutamist TObjectD Dictionary klass siin. TObjectDictionary saab objektide elueaga automaatselt hakkama.

Võtme väärtus ei saa olla null, samas kui väärtuse väärtus saab.

Kui TObjectD Dictionary sõnastatakse, täpsustab Ownerships parameeter, kas sõnastikul on võtmeid, väärtusi või mõlemat - ja see aitab teil mälulekke vältida.

instagram story viewer