![]() |
Wort in Liste vorhanden
Hi,
Ich habe eine Liste? mit etwa 88.000 Einträgen, jeder Eintrag ist ein Wort. Nun suche ich nach einer sehr schnellen möglichkeit zu überprüfen ob ein Wort in dieser Liste ist oder nicht. Mir geht es nur um ein ob, nicht wo ein wo. Z.Z verwende ich dazu eine TStringList aber die ist mir zulangsam. Gibt es da eine schnellere Lösung ? mfg, Björn |
Re: Wort in Liste vorhanden
Hallo Björn,
wenn die Stringliste sortiert ist ( ![]() ![]() Gruß Hawkeye |
Re: Wort in Liste vorhanden
Wenn sie sorted ist, könntest du mit binärer Suche drüberlaufen. Kann allerdings sein, dass TStringList das sowieso macht, wenn sie sorted ist.
|
Re: Wort in Liste vorhanden
Da muss ich mich doch fragen, wie du gesucht hast.
Vor allem für jemanden, der Antworten wie meine hier seit fast 2 Jahren und fast 700 Beiträgen bekommt. ;) Mein erster Versuch mit einer so stumpfsinnigen Suchanfrage wie ![]() Nachtrag: @Hawkeye, eine StringLit muss tatsächlich suchen, eine sortierte StringList muss immer noch (binär) suchen und dann auch noch sortiert einfügen. Ein Dictionary muss nur den CRC einens Key generieren und kann dir direkt sagen, ob der Key drin ist oder nicht. Ohne zu suchen. Mit Delphi Boardmitteln hättest du sicherlich Recht, aber Alzhaimers Klassen bringen keine Abhängigkeiten auf andere Komponenten mit. :) |
Re: Wort in Liste vorhanden
Hallo Elvis,
ich habe natürlich zunächst versucht, zu einem Bordmittel zu greifen. Ohne genauere Informationen von Björn können wir nur raten, ob die die Suchgeschwindigkeit ausreichend ist. Der Knackpunkt wird der Aufbau der Liste sein. Wird sie im Lauf der Verarbeitung ständig erweitert, ist die Stringliste nicht mehr das geeignete Medium zum Speichern (und Suchen) der Daten. In diesem Fall sollte man auf das von dir genannte Dictionary ausweichen. Ich wollte mir die Klassen schon immer mal genauer angesehen, habe es aber bisher versäumt. Danke für den "Push"! Zitat:
Gruß Hawkeye |
Re: Wort in Liste vorhanden
was Genau ist ein Dictionary?
Und wie verwendet man das? |
Re: Wort in Liste vorhanden
Zitat:
Aber es scheint dich ja nicht wirklich zu interessieren, sonst hättest du das schon alleine gemacht... :? |
Re: Wort in Liste vorhanden
Hi,
nebenbei bemerkt ist die THashedStringList i.d.R. um einiges schneller als die TStringList (und ein VCL eigenes Mittel). In wirklich großen Listen fällt die aber (soweit ich mich richtig erinner) irgendwann auch deutlich hinter alzaimars Klassen zurück (der hatte glaube ich mal irgendwo einen Vergleich gehabt). Gruß Der Unwissende |
Re: Wort in Liste vorhanden
Danke für eure Antworten :thumb:
Werde erstmal eine sortierte THashedStringList nehmen. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz