AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sortierter Container

Ein Thema von freimatz · begonnen am 24. Sep 2022 · letzter Beitrag vom 26. Sep 2022
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#1

Sortierter Container

  Alt 24. Sep 2022, 17:36
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?

Geändert von freimatz (25. Sep 2022 um 07:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#2

AW: Sortierter Container

  Alt 24. Sep 2022, 18:11
Wie sieht dein Anwendungsfall aus, weswegen es eine sortierte Liste sein muss?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Sortierter Container

  Alt 24. Sep 2022, 19:38
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. 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 von mir?!
Es wird wohl nichts passendes geben.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: Sortierter Container

  Alt 24. Sep 2022, 20:23
TArray.Sort<T> und TArray.BinarySearch<T>

System.Generics.Collections
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Sortierter Container

  Alt 26. Sep 2022, 11:38
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)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Sortierter Container

  Alt 26. Sep 2022, 12:40
Ist schon über 10 Jahre her und von mir?!
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

Geändert von TigerLilly (26. Sep 2022 um 12:42 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Sortierter Container

  Alt 26. Sep 2022, 12:49
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. Also doch. Danke.
@TigerLilly: Jein. Ja, das ist das Ding. Nein, ich habe es nicht da raus, sondern damals noch orginal gekauft.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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