Ben: C# Datentypenauswahl

Beitrag lesen

Hallo Daniel

Erstmal vielen Dank für deine Antwort.

Ich möchte nochmals nachhaken, wenn ich schon einen Experten habe den ich löchern kann. :-) Das mit den Hausnummern war eigentlich eher ein Beispiel für meine grundlegende Frage, wie man das machen muss wenn man Objekte anhand einer bestimmten Eigenschaft finden muss.

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? Sonst hätte ich ja dann redundante und gegebenenfalls auch inkonsistente Informationen im Objekt und bei der Liste. In diesem Fall bliebe mir also nichts anderes übrig als das richtige Objekt in der Liste oder einem ähnlichen Datentypen zu suchen?

Nochmals Danke und Gruss
Ben

Hallo Ben,

Hausnummern sind meist ziemlich lückenlos vergeben, damit würde sich eine normale Liste mit Index-basiertem Zugriff (also bspw. eine Array-Liste, wie immer die bei C# heißt, die Namensgebung ist da hochgradig bescheuert).
Dann kannst Du Haus Nr. 123 einfach mit list.get(123) bekommen und das geht in konstanter Zeit. Gibt es kein Haus mit der Nummer, kommt halt null zurück. Diese leeren Listenplätze sind akzeptabel, da es davon typischerweise eben nicht viele gibt.
Nun kommen noch so Sachen wie Haus 1a, 1b, 1c ins Spiel. Das könnte man abbilden, indem man Listen schachtelt. Für a,b,c muss man dann eben in einer Liste nochmal linear suchen.
Außerdem gibt es sortierte Tabellen, z.B. solche, die auf Binärbäumen aufbauen (irgendwo hat C# auch sowas). Diese speichern die Elemente sortiert und der Zugriff geht in O(log(n)). Nicht so schnell wie die Array-Liste aber immerhin. Da könnte man dann auch direkt die Nummern mit Buchstaben ablegen, wenn man die Ordnung entsprechend definiert.

Zu guter Letzt gibt es aber noch eine Designfrage zu dem Thema: Was hat die Nummerierung mit der Anordnung der Häuser zu tun? Typischerweise werden in Deutschland Häuser abwechselnd rechts links nummeriert, es gibt aber meines Wissens auch Länder/Orte bei denen einfach die eine Seite hoch und die andere runter nummeriert wird/wurde. Außerdem gibt es da natürlich immer kleine Abweichungen vom Schema.
Du musst Dir also überlegen, welche Information Du eigentlich aus der Ordnung der Hausnummern ziehen willst, und ob das so wirklich funktioniert.

Grüße

Daniel