C# Sortierte Liste: Wie man das nächste element?
Frage ich mich, wie man das nächste element in einer C# sortierte Liste. Bisher habe ich mit dem folgenden code:
SortedList<int, Bla> mList;
Bla someElement = mList[key];
Bla next = mList[mList.Keys[mList.IndexOfKey(key) + 1]];
Ich bin mir nicht sicher, ob das der Klügste Weg, es zu tun 😉
- Geben Sie die Typen genau.
- Was ist der Typ von
mList
? - Oops, sorry. Ich habe die Erklärung von der Liste...
- Können Sie nicht einfach halten Sie eine separate index-Variablen?
- foreach (KeyValuePair<int, Bla> Eintrag in mList){ ... } ????
- Verwenden IndexOfKey und GetByIndex.
- Wenn Sie die post, als Antwort werde ich upvote es. Allen anderen hier scheint unfähig, die Beantwortung der Frage, wurde tatsächlich gefragt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da können Sie auf eine
SortedList
durch index (siehe den Abschnitt "Bemerkungen"), würde ich empfehlen die folgenden:Dies funktioniert in der gleichen
O(log n)
als eine einzige lookup.Hier ist auch die LINQ-Weg, es zu tun:
Diese wird nur einmal aufzählen. Es wird ausgeführt, in
O(n)
.SortedList zugegriffen werden kann, indem beide Schlüssel und index
Erhöhen Sie den index,
Holen Sie sich die nächsten Artikel von index.
SortedList<int, Bla>
? SortedList unter Generika nicht hvGetByIndex
sofern ich etwas falsch interpretiertGetByIndex
existierte. In der Realität, die Sie verwenden müssenmList.Values[index]
.SortedList
, so ist dies definitiv eine gute Antwort.SortedList<int, Bla>
ist nicht dasselbe wie Schlüssel/Wert-paar von SortedList, die der AuffassungObject
SortedList<int, Bla>
... diese info kam erst später hinzu.Verwenden Sie enumerator:
key
.