Gewusst wie: Durchlaufen Schlüssel einer Hashtable in alphabetischer Reihenfolge?
Was ist der einfachste Weg, um die traverse eine hashtable Schlüssel in aufsteigender alphabetischer Reihenfolge?
InformationsquelleAutor Pavel Bastov | 2009-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ziemlich abhängig von, was der Typ des Schlüssels ist. Aber können davon ausgehen, für eine minute, dass Sie strings sind. Könnten Sie die folgende LINQ-Abfrage
Für komplexere Strukturen, die LINQ-Abfrage ist nur etwas anders. Nehmen wir an, Sie hätten die folgende definition für einen Schlüssel
Den LINQ-code wäre der folgende
Sie müssen System.Linq -. Siehe msdn.microsoft.com/en-us/library/bb341406.aspx
InformationsquelleAutor JaredPar
Gut, ich fand das snippet aus, die am ehesten zu meiner situation:
InformationsquelleAutor Pavel Bastov
Wenn Sie möchten, eine Karte, die hält Ihre Schlüssel in der natürlichen Ordnung, ich schlage vor, Sie verwenden nicht
Hashtable
mit zu beginnen. Wenn Sie immer noch mit 1.1, mitSystem.Sammlungen.SortedList
. Wenn Sie 2.0 oder höher, verwenden SieSortedList<TKey, TValue>
oderSortedDictionary<TKey, TValue>
. Die beiden letzteren sind weitgehend das gleiche in Bezug auf die API, haben aber unterschiedliche Leistungsmerkmale - siehe die Dokumentation für mehr Informationen.Nein - Sie sind getrennte Arten. Sie können erstellen Sie eine neue SortedDictionary aus einer Hashtable, mit ein bisschen Pflege. Aber wenn Sie verwenden .NET 2.0 sowieso, warum sind Sie mit Hashtable in den ersten Platz? Sie sollten in der Lage sein, ersetzen Sie einfach Hashtable mit SortedDictionary in den meisten Fällen, es sei denn, Sie wirklich brauchen, die O(1) lookup.
InformationsquelleAutor Jon Skeet
Das ist nicht wirklich das, was hash-Tabellen sind für (Sie sind gemacht zu haben, die gleichmäßige Verteilung der Schlüssel). Verwenden Sie einen sortierten Baum?
InformationsquelleAutor JH.
Wird es wohl etwas schneller zu bedienen SortedList -
erstellen & Sortieren der ArrayList ist O(n) + O(nlog n) = O(nlog n), in der Erwägung, dass die SortedList-Konstruktor (entsprechend der Dokumentation) ist O(n), so dass es dann schneller zu bedienen SortedList direkt anstatt eine arraylist und explizit Sortieren
InformationsquelleAutor thecoop