Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Sortierter Container (https://www.delphipraxis.net/211498-sortierter-container.html)

freimatz 24. Sep 2022 16:36

Sortierter Container
 
Hallo,
in einem alten Projekt verwende ich für eine Container die Klasse TStSortedCollection. Die ist schon recht alt, sie unterstützt keine Generics, scheint aber sonst sehr mächtig zu sein. Nun würde ich das gerne modernisieren und frage mich was da als Container-Klasse passt. Es müsste eine sortierte Collection sein. Etliche wie z.B. die TList/Ilist bieten zwar eine Sortierfunktion an, sortieren aber nur auf Bedarf - oder nicht? Mir fällt keine Standardklasse ein die von Haus eine sortierte Liste darstellt (ausser TStringList). Ich habe hier noch wo eine Implementierung eines AVL-Baum rumliegen.
Habe ich ein Brett vor dem Kopf? Irgendwelche Vorschläge?

Uwe Raabe 24. Sep 2022 17:11

AW: Sortierter Container
 
Wie sieht dein Anwendungsfall aus, weswegen es eine sortierte Liste sein muss?

freimatz 24. Sep 2022 18:38

AW: Sortierter Container
 
Puh, schwierige Frage: Die Klasse ist recht low level und Teil wiederum einer anderen Datenstrukur, welche 1000fach verwendet wird. Und der Code ist teilweise bald 30 Jahre alt. :-D Die Anzahl der Einträge ist max. fünfstellig, typischer weise viel weniger.
es muss auch nicht unbedingt sein. Ich kann die Klasse auch lassen wie sie ist. Immerhin ist sie nun nicht mehr von der TStSortedCollection abgeleitet sondern hält diese als Kompositum. Ggf. könnte man auch einen Wrapper um die TStSortedCollection machen.
Habe gerade nochmals gegoogelt und fand das. Ist schon über 10 Jahre her und :shock: von mir?! :-D
Es wird wohl nichts passendes geben.

himitsu 24. Sep 2022 19:23

AW: Sortierter Container
 
TArray.Sort<T> und TArray.BinarySearch<T>

System.Generics.Collections

Stevie 26. Sep 2022 10:38

AW: Sortierter Container
 
Spring4D hat:

- sorted list (nutzt binary search und insert an die entsprechende Stelle beim Einfügen, kann dadurch durch die vielen Moves bremsen)
- sorted dictionary (nutzt intern einen rb tree und einen IComparer für die keys)
- sorted set (genau wie das dictionary aber hier brauchts keinen extra key)

TigerLilly 26. Sep 2022 11:40

AW: Sortierter Container
 
Zitat:

Zitat von freimatz (Beitrag 1512383)
Ist schon über 10 Jahre her und :shock: von mir?! :-D
Es wird wohl nichts passendes geben.

Ich denke, das ist da raus:
https://github.com/TurboPack/SysTools

https://github.com/TurboPack/SysTool...rce/StColl.pas

freimatz 26. Sep 2022 11:49

AW: Sortierter Container
 
Zitat:

Zitat von Stevie (Beitrag 1512443)
Spring4D hat:

- sorted list (nutzt binary search und insert an die entsprechende Stelle beim Einfügen, kann dadurch durch die vielen Moves bremsen)
- sorted dictionary (nutzt intern einen rb tree und einen IComparer für die keys)

Wie konnte ich das übersehen. :shock: Also doch. Danke.
@TigerLilly: Jein. Ja, das ist das Ding. Nein, ich habe es nicht da raus, sondern damals noch orginal gekauft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 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