Ich muss eine Nachschlagetabelle als Instanz Mitglied in einer meiner Klassen speichern. Die Tabelle wird beim Erstellen des Objekts initialisiert. Jede „Reihe“ haben drei „Säulen“:Was ist die beste Datenstruktur für diese In-Memory-Lookup-Tabelle?
StringKey (e.g., "car")
EnumKey (e.g., LookupKeys.Car)
Value (e.g, "Ths is a car.")
ich die Datenstruktur auswählen möchten, die dafür Lookups entweder durch die StringKey oder der EnumKey die beste Leistung wird erhalten.
Es ist irgendwie peinlich mit 2 Tasten für den gleichen Wörterbuchwert. Ich habe das noch nie zuvor gesehen, also frage ich mich, was die Norm für diese Art von Ding ist.
Ich könnte eine Key/Value/Value-Struktur anstelle von Key/Key/Value, aber ich frage mich, welche Art von Auswirkungen auf die Leistung haben würde.
Denke ich über alles falsch?
OK - also in meinem Beispiel sind die "Wert-Instanzen" nur Zeichenfolgen. Ich mache zwei Wörterbücher (eines mit StringKey, eines mit EnumKey), deren Werte die gleiche String-Referenzvariable enthalten. Klingt das richtig? –
Genau. In Python ist das alles. In Java gibt es eine string.intern(), die sicherstellt, dass alle intern() 'd-Strings auf einen gemeinsamen String-Pool reduziert werden, wodurch einige mögliche Redundanzen eliminiert werden. –
Ich verwende C# ... Wissen Sie, ob .NET eine Kopie der Zeichenfolge erstellt, wenn ich es jedem Wörterbuch hinzufüge? –