Daniel Thoma: C# Datentypenauswahl

Beitrag lesen

Hallo Ben,

Wenn ich jetzt mal von dem Beispiel mit den Hausnummern abstrahiere und annehme dass die gesuchte Eigenschaft veränderbar ist (was wahrscheinlich bei Hausnummern nicht so der Fall ist), wäre es ja nicht sehr sinnvoll, diese Eigenschaft als Schlüssel für etwas wie eine ArrayList oder ähnliches zu nehmen, oder?

Eigenschaften, die als Schlüssel dienen, dürfen sich nicht ändern, jedenfalls nicht, so lange das entsprechende Objekt in der Datenstruktur ist, richtig. Wenn man effizient über solche veränderlichen Eigenschaften zugreifen muss, muss man aber Hash-Tabellen, Binärbäume oder andere Datenstrukturen verwenden.

Sonst hätte ich ja dann redundante und gegebenenfalls auch inkonsistente Informationen im Objekt und bei der Liste.

Redundant ist die Information in jedem Fall. Das ist aber kein Problem. Redundanz ist notwendig, um effizient Zugreifen zu können. Auch Indizes, wie sie Datenbanken anlegen, sind ja redundant, in dem Sinne, dass man die Information auch schon so gespeichert hat.

In diesem Fall bliebe mir also nichts anderes übrig als das richtige Objekt in der Liste oder einem ähnlichen Datentypen zu suchen?

Nein, je nach Szenario gibt es zwei Möglichkeiten:
1. Du kannst temporäre Datenstrukturen aufbauen. Wenn Du bspw. eine Berechnung durchführst, und weist, dass sich die Daten während dieser Berechnung nicht ändern, kannst Du dafür Datenstrukturen aufbauen.
2. Du kannst die Datenstrukturen bei Änderungen aktualisieren. Das erfordert allerdings, dass Dein Datenmodell eine Möglichkeit bietet, auf Änderungen der Daten zu reagieren. Dann kannst Du abfangen, dass ein "Schlüssel" geändert wird, das Element löschen und neu einfügen. Das klingt erstmal relativ aufwendig und ist es tatsächlich auch. Allerdings kommt man bei komplexeren Anwendungen und Datenmodellen praktisch nie darum herum, ein solches Event-Handling zu implementieren.

Grüße

Daniel