Laden...

Welche Collection ist geeignet

Erstellt von MaxMeise vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.359 Views
M
MaxMeise Themenstarter:in
11 Beiträge seit 2005
vor 18 Jahren
Welche Collection ist geeignet

Hallo,

ich möchte eine groessere Anzahl von Strings ( ~20.000) nach vorher festgelegten Regeln durchsuchen, z.B.
"Gib mir alle Strings die x Zeichen lang sind und zwei 'E' und 3 'A' enthalten".
Da diese Suchfunktion innerhalb des Programmlaufes mehrfach vorkommt, ist ein
iterieren üper alle collection strings zu langsam.
Ich dachte daher an eine Keyerzeugung für Hashtables während des Programmstarts, um dann schnell auf die einzelnen Gruppen zugreifen zu können.
Bsp: "AHA" -> 03A2H1
Funktioniert leider nicht, da es natürlich mehrere x Zeichen lange Wörter mit zwei 'E' und 3'A' geben kann und dann keys doppelt sind.
Es fehlt mir also eine Hashtable die duplicate keys erlaubt.

bis dann,

MaxMeise

4.221 Beiträge seit 2005
vor 18 Jahren

Geschachtelte Collection

Obere Collection enthält nur den Key und als Value eine ArrayList

In der ArrayList sind dann die Werte welche auf den Key mappen

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

M
MaxMeise Themenstarter:in
11 Beiträge seit 2005
vor 18 Jahren

Hallo,

danke, werde ich ausprobieren.

bis dann,

MaxMeise

P
939 Beiträge seit 2003
vor 18 Jahren

Ich habe eine StringSearchDictionary-Klasse geschrieben. Die erlaubt die Suche mit Wildcards (*, +, ?, ., {m,n}). Man kann auch eine Liste mit Zeichen angeben, auf die die Suche eingechränkt werden soll, allerdings nicht so wie du es brauchst.

Beispiel:

StringSearchDictionary dict = new StringSearchDictionary(stringColl);

IList resultList = dict["ab*nen"];
dict.Remove("ab*nen+");

Intern basiert das Ganze auf einer Baumstruktur. Jedem Baumknoten ist ein Zeichen zugeordnet. Ein String als Schlüssel definiert mit seinen Zeichen einen Pfad in den Baum. Im letzten Knoten des Pfades ist der Wert zum Schlüssel abgelegt. Diese Art von Baum eignet sich besonders gut für Wildcard-Suchen. Sie wird häufig in elektronischen Wörterbüchern eingesetzt.

Wenn dir die Klasse was nützt, kann ich sie heute abend mal online stellen. Sie ist auf jeden Fall sehr schnell. Suchen in 20.000 Begriffen erfolgt ohne spürbare Zeitverzögerung, selbst wenn die Ergebnisliste gross ist.

Gruss
Pulpapex

S
8.746 Beiträge seit 2005
vor 18 Jahren

Hast du das als B-Baum implementiert?

P
939 Beiträge seit 2003
vor 18 Jahren

Nein,

ich habe den Aufbau oben angedeutet, kein B-Baum. Laut Wikipedia nennt sich das Trie-Baum.