Liste vs. Hashmap

Hi,

ich arbeite mit der GUI-Library wxWindows und stehe vor folgender Frage:

Aus einer Datenbank lese ich mehrere Datensätze. Jeder Datensatz wird in ein Objekt „geschoben“.
Num nöchte ich die Objekte in einem Container bereitstellen, damit man z.B. über einen Choice eine bestimmte Auswahl treffen kann.
Dazu kann ich ein dynamisches Objektarray, eine Liste oder eine Hashmap verwenden.

Da die Auswahl in dem Choice einen int zurückliefert, wäre meiner Meinung nach eine Hashmap wegen der Indizierung gut geeignet, denn im Endeffekt kann ich dann so das jeweilige Objekt direkt ansprechen.

Was spricht dafür oder dagegen?
Bietet eine Liste bessere Vorteile?

Ich muss im Eigentlichen auch in dem Container suchen, also wäre eine Liste ja wiederum sequentiell zu durchlaufen.
Eine Liste aber ist sicher schneller zu „füllen“, oder?!

Vielen Dank, auch für Links zu einem Vergleich
Ciao, Bill

Es kommt eben darauf an, wie du drauf zugreifen willst. Wenn so gut wie immer ein Zugriff per eindeutigem Index erfolgt ist ne Hashtable ganz klar ne super Sache.

Was heisst konkret „ich muss im Container suchen“? Nach irgendwelchen beliebigen Attributen? (dann ist es grad egal was für eine Collection du verwendest, weil du so oder so alle Elemente checken musst) oder nach einem bestimmten Attribut nachdem du z.b. ein Array sortieren könntest. In einem sortierten Array kannst du natürlich sehr schnell über eine binäre Suche ans Ziel kommen.

Um deine Frage präziser beantworten zu können. wären mehr Infos zu der Art der gespeicherten Daten und der Abfrage erforderlich.

Das Füllen geht mit einer verketteten Liste oder einer Hashtable sehr schnell… ein array das dynamisch wachsen muss ist potentiell langsam, kommt aber drauf an ob es nur einmal gefüllt wird oder sich ständig in der größe verändert

Grüße
Bruno

Da die Auswahl in dem Choice einen int zurückliefert, wäre
meiner Meinung nach eine Hashmap wegen der Indizierung gut
geeignet, denn im Endeffekt kann ich dann so das jeweilige
Objekt direkt ansprechen.

Alsoe wenn tatsächlich ein int zurückkommt, dann würde ich eine List nehmen, da man ja hier über Index zugreifen kann.
Eine Map empfiehlt sich dann, wenn man über bestimmte Schlüsselbegriffe zugreiffen muß/will.

Wenn man z.Bsp einen Mitarbeiter über seinen Namen auswählen will und dieser nicht sowiso schon in einen Index umgesetzt wird, nimmt man eine Map mit dem Namen als key.

Alsoe wenn tatsächlich ein int zurückkommt, dann würde ich
eine List nehmen, da man ja hier über Index zugreifen kann.

Das macht aber nur Sinn, wenn der int-Wert auch dem Index innerhalb des Arrays entspricht… dürfte normalerweise eher nicht der Fall sein. Z.B. ist der Index irgendein zufälliger Datenbankwert.

Hi,

Um deine Frage präziser beantworten zu können. wären mehr
Infos zu der Art der gespeicherten Daten und der Abfrage
erforderlich.

danke erstmal, für eure Hilfen.
Ich werde mich noch ein bisschen in dem Problem vorarbeiten und später die Frage nochmals genauer stellen (wahrscheinlich als neuer Post?!).

Ciao, Bill