TD Dictionary -sovelluksen käyttö hash-taulukoissa Delphissä

click fraud protection

Esitelty Delphissä 2009 TD sanakirjaluokka, määritelty Generics-julkaisussa. Kokoelmat-yksikkö edustaa avainkohtaisparien yleistä hash-taulukkotyyppikokoelmaa.

Geneeriset tyypit, joka esiteltiin myös Delphi 2009 -sovelluksessa, antaa sinun määritellä luokkia, jotka eivät nimenomaisesti määrittele datadatan tyyppiä.

Sanakirja on tavallaan samanlainen kuin taulukko. Vuonna ryhmä työskentelet arvojen sarjan (kokoelman) kanssa, joka on indeksoitu kokonaisluvulla, joka voi olla mikä tahansa ordinaalisen tyypin arvo. Tällä hakemistolla on ala- ja yläraja.

Sanakirjaan voit tallentaa näppäimiä ja arvoja, missä jompikumpi voi olla mitä tahansa.

TD Dictionary -rakentaja

Siksi TD Dictionary -konstruktorin ilmoitus:

Delphissä TD-sanakirja on määritelty hash-taulukkoksi. Hash-taulukot edustavat kokoelmaa avain- ja arvopareja, jotka on järjestetty avaimen hash-koodin perusteella. Hash-taulukot on optimoitu hakuihin (nopeus). Kun avain-arvopari lisätään hash-taulukkoon, avaimen hash lasketaan ja tallennetaan lisätyn parin kanssa.

instagram viewer

TKey ja TValue voivat olla minkä tyyppisiä, koska ne ovat geneerisiä. Jos sanakirjaan tallennettavat tiedot tulevat esimerkiksi jostakin tietokannasta, avain voi olla GUID (tai jokin muu arvo, joka esittää yksilöllisen hakemiston) arvon, kun taas Arvo voi olla kohde, joka on kartoitettu tietokannan tietoriville taulukoita.

TD-sanakirjan käyttäminen

Yksinkertaisuuden vuoksi alla olevassa esimerkissä käytetään kokonaislukuja TKeysille ja merkkejä TV-arvoille.

Ensin julistamme sanakirjamme määrittelemällä, minkä tyyppiset TKey ja TValue ovat:

Sitten sanakirja täytetään Lisää-menetelmällä. Koska sanakirjassa ei voi olla kahta paria, joilla on sama avainarvo, voit käyttää ContainsKey-menetelmää tarkistaaksesi, onko jokin avainarvoinen pari jo sanakirjan sisällä.

Voit poistaa parin sanakirjasta Poista-menetelmällä. Tämä menetelmä ei aiheuta ongelmia, jos määritetyn avaimen sisältävä pari ei ole osa sanakirjaa.

Voit käydä läpi kaikki parit silmukoiden läpi avainten avulla: varten silmukka.

Käytä TryGetValue-menetelmää tarkistaaksesi, sisältyykö jokin avain-arvo-pari sanakirjaan.

Sanakirjan lajittelu

Koska sanakirja on hash-taulukko, se ei tallenna kohteita määritettyyn lajittelujärjestykseen. Jatka toistamista avainten avulla, jotka on lajiteltu vastaamaan erityistarpeitasi, hyödyntämällä TList - yleinen kokoelmatyyppi, joka tukee lajittelua.

Yllä oleva koodi lajittelee avaimet nouseviin ja laskeviin ja tarttuu arvoihin ikään kuin ne olisi tallennettu lajiteltuun järjestykseen sanakirjassa. Kokonaislukutyyppisten avainarvojen alenevassa lajittelussa käytetään TCompareria ja tuntematonta menetelmää.

Kun avaimet ja arvot ovat TObject-tyyppisiä

Yllä oleva esimerkki on yksinkertainen, koska sekä avain että arvo ovat yksinkertaisia ​​tyyppejä. Sinulla voi olla monimutkaisia ​​sanakirjoja, joissa sekä avain että arvo ovat "monimutkaisia" tyyppejä, kuten tietueet tai objektit.

Tässä on toinen esimerkki:

Tässä käytetään avainta varten mukautettua tietuetta ja arvoksi muokattua objektia / luokkaa.

Huomaa erikoistuneen käyttö TObjectDictionary luokka täällä. TObjectDictionary voi käsitellä esineiden eliniän automaattisesti.

Avaimen arvo ei voi olla nolla, kun taas Arvo-arvo voi olla.

Kun TObjectDictionary-sovellus välitetään, Ownerships-parametri määrittelee, omistavatko sanakirja avaimet, arvot vai molemmat - ja auttaa siksi, että sinulla ei ole muistivuotoja.

instagram story viewer