Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Liste mit zusammengesetztem Schlüssel (https://www.delphipraxis.net/192606-liste-mit-zusammengesetztem-schluessel.html)

Nersgatt 4. Mai 2017 13:17

Liste mit zusammengesetztem Schlüssel
 
Moin,

ich brauche eine Liste, in der ich zügig anhand eines Schlüssels suchen kann. Allerdings besteht der Schlüssel aus 3 Werten (einem Integerwert und 2 Int64 Werten).
Eigentlich sowas wie ein TDictionary<>, nur dass ich halt 3 Werte als Schlüssel benötige.

Was kann man da nehmen?

Danke!
Jens

SProske 4. Mai 2017 13:19

AW: Liste mit zusammengesetztem Schlüssel
 
Mach dir doch ein record aus den 3 Schlüsseln und verwende das als Key.

Klaus01 4. Mai 2017 13:22

AW: Liste mit zusammengesetztem Schlüssel
 
.. oder bilde über die 3 Werte einen Hash - dann solltest Du einen einzelnen eindeutigen Schlüssel bekommen.

Grüße
Klaus

JasonDX 4. Mai 2017 13:49

AW: Liste mit zusammengesetztem Schlüssel
 
Zitat:

Zitat von Klaus01 (Beitrag 1370176)
.. oder bilde über die 3 Werte einen Hash - dann solltest Du einen einzelnen eindeutigen Schlüssel bekommen.

Ein Hash ist aber nicht eindeutig - Kollisionen müssen da dann berücksichtigt werden. Idealerweise macht das eine HashMap, bei der man den von SProske genannten Record als Key benutzt.

freimatz 4. Mai 2017 15:55

AW: Liste mit zusammengesetztem Schlüssel
 
Wozu eine HashMap?
Man braucht für das TDictionary ggf. noch ein Implementierung eines IComparer. Dann sollte das reichen.

himitsu 4. Mai 2017 16:11

AW: Liste mit zusammengesetztem Schlüssel
 
TDictionary nutzt standardmäßig eine HashMap.
Und da hier alle Wete statisch sind, kann man da auch ganz einfach die 3 Integer als Record verwenden und das "binär" vergleichen lassen, anstatt einen eigenen Comparer zu definieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz