SortedDictionary mit Values // Dictionary mit mehreren Keys

11/04/2008 - 22:03 von Michael Stum | Report spam
Hallo,

2 Fragen:
Ein SortedDictionary sortiert ja auf den Key. Ich habe aber ein
Dictionary<string,MeinStruct> und will anhand von MeinStruct.EinInt
sortieren. Mir ist klar, dass das eine O(n) Operation wird, daher wàre
es wohl am besten, ein normales Dictionary<> zu nehmen und erst zum
Schluß wenn es sortiert werden muss zu sortieren. Bevor ich jetzt mit
einer For-Schleife rumhample: Was wàre vom Ansatz her der beste Weg?
Dictionaries haben ja leider keine Sort-Funktion, und bevor ich jetzt
das Rad neu erfinde und selber etwas baue findet sich vielleicht im
Framework etwas, das mir ein Dictionary sortieren kann anhand eines
selbstgeschriebenen Komparators?

Meine zweite Frage: Ich bràuchte ein Dictionary, aber mit 3 Keys pro
Value. Momentan verwende ich String.Concat um die drei Keys in einen
String zu packen, aber wenn ich z.B. nur nach einem Key suche mache ich
wieder O(n) weil ich jeden Key durchgehen muss, was witzlos ist.
Die Alternative: Das Dictionary als <Guid,MeinStruct> auslegen und dann
drei Dictionaries <string,Guid> die quasi nur als Lookup dienen. Das
würde wahrscheinlich funktionieren, aber auch hier frage ich mich, ob
ich nicht gerade das Rad neu erfinde.
 

Lesen sie die antworten

#1 Gilles Kohl [MVP]
12/04/2008 - 01:08 | Warnen spam
Michael,

On Fri, 11 Apr 2008 22:03:29 +0200, Michael Stum
wrote:

Hallo,

2 Fragen:
Ein SortedDictionary sortiert ja auf den Key. Ich habe aber ein
Dictionary<string,MeinStruct> und will anhand von MeinStruct.EinInt
sortieren. Mir ist klar, dass das eine O(n) Operation wird, daher wàre
es wohl am besten, ein normales Dictionary<> zu nehmen und erst zum
Schluß wenn es sortiert werden muss zu sortieren. Bevor ich jetzt mit
einer For-Schleife rumhample: Was wàre vom Ansatz her der beste Weg?
Dictionaries haben ja leider keine Sort-Funktion, und bevor ich jetzt
das Rad neu erfinde und selber etwas baue findet sich vielleicht im
Framework etwas, das mir ein Dictionary sortieren kann anhand eines
selbstgeschriebenen Komparators?

Meine zweite Frage: Ich bràuchte ein Dictionary, aber mit 3 Keys pro
Value. Momentan verwende ich String.Concat um die drei Keys in einen
String zu packen, aber wenn ich z.B. nur nach einem Key suche mache ich
wieder O(n) weil ich jeden Key durchgehen muss, was witzlos ist.
Die Alternative: Das Dictionary als <Guid,MeinStruct> auslegen und dann
drei Dictionaries <string,Guid> die quasi nur als Lookup dienen. Das
würde wahrscheinlich funktionieren, aber auch hier frage ich mich, ob
ich nicht gerade das Rad neu erfinde.



Ich denke Du wirst uns mehr zu den Anforderungen erzàhlen müssen -
wozu brauchst Du bei der ersten Frage die beiden Sortierungen, und wie
sieht die Verwendung des Dictionaries aus: viele Eintragungen, wenig
Zugriffe oder umgekehrt? Wàre ein zweites SortedDictionary eine
Lösung?

Bei der zweiten Frage: welches sind die 3 Keys? Macht es Sinn eine
Klasse daraus zu bilden? Ich denke auch hier könnte es helfen zu
wissen was Du eigentlich brauchst?

Viele Grüße,
Gilles.

Ähnliche fragen