ハッシュテーブルのキーをアルファベット順に昇順にトラバースする最も簡単な方法は何ですか?ハッシュテーブルのキーをアルファベット順にトラバースする方法は?
答えて
これは、キーのタイプにかなり依存しています。しかし、それは文字列であると分かります。次のLINQクエリを使用することができます
Hashtable table = GetHashTable();
var keys = table.Keys.Cast<String>().OrderBy(x => x);
複雑な構造の場合、LINQクエリはわずかに異なります。あなたはLINQコードは、ハッシュテーブルは(彼らは鍵の均一な分布を持つように作られていますのために設計されていない、本当に何次
Hashtable table = GetHashtable();
var keys = table.Keys.Cast<Name>().OrderBy(x => x.First).ThenBy(x => x.Last);
ザッツだろうキー
struct Name {
public string First;
public string Last;
// Equality code omitted
}
ため、以下の定義を持っていたと仮定しましょ)。ソートされたツリーを使用しますか?
レガシーコードで作業する必要があります。今のところ、私はSortedDictionaryなどのようなものを使用するためにリファクタリングするのは非常に気になりません。でも、キー(文字列)はアルファベット順に移動する必要があります。 –
自然な順序でキーを保持するマップが必要な場合は、まずはHashtable
を使用しないことをお勧めします。それでも1.1を使用している場合は、System.Collections.SortedList
を使用してください。 2.0以上を使用している場合は、SortedList<TKey, TValue>
またはSortedDictionary<TKey, TValue>
を使用してください。後者の2つは,でAPIは同じですが、パフォーマンスの特性が異なります。詳しくは、ドキュメントを参照してください。
私はSortedDictionaryのアイディアが好きです。 HashtableとSortedDictionary
いいえ - 別々のタイプです。 Hashtableから新しいSortedDictionaryを作成できます。ちょっとした注意が必要です。とにかく.NET 2.0を使用しているのであれば、なぜHashtableを最初に使用していますか? O(1)ルックアップが本当に必要な場合を除き、ほとんどの場合、HashtableをSortedDictionaryに置き換えることができます。 –
まあ、私はこのスニペットは、私の状況に最も適していることが判明:
Hashtable settings = GetSettings(); ArrayList keys = new ArrayList(); keys.AddRange(settings.Keys); keys.Sort(); foreach (object key in keys) { // Logic here }
それはおそらくSortedListのを使用するために、わずかに速くなるだろう -
ソート&を作成SortedList settings = new SortedList(GetSettings());
foreach (object key in settings.Keys)
{
//logic
}
ArrayListはO(n)+ O(nlog n)= O(nlog n)ですが、SortedListコンストラクタはO(n)であるため、arraylistを使用するのではなくSortedListを直接使用する方が速くなります明示的にソートすると
- 1. アルファベット順のコンパレータをアルファベット順と異なる順序で作成する方法
- 2. アルファベット順と姓でアルファベット順に並べ替える方法
- 3. アルファベット順にアルファベット順にソート
- 4. アルファベット順のキー/値のリストをソート
- 5. C++:ソート方法/アルファベット順
- 6. アルファベット順にリストのファーストネームのみを取得する方法は?
- 7. Cでアルファベット順にファイルの行をソートする方法は?
- 8. はアルファベット順に
- 9. JQuery UIをソート可能にアルファベット順にソートする方法は?
- 10. 辞書をアルファベット順にソートする方法は?
- 11. File.listFilesをアルファベット順に表示する方法は?
- 12. C#LinkedListを逆順にトラバースする方法
- 13. ハッシュテーブルの要素の順序を保持する方法
- 14. オブジェクト値のアルファベット順をソートする方法は?
- 15. アルファベット順インデックスをUITableviewの右側に配置する方法
- 16. アルファベット順にテキストファイルを並べ替える方法は?
- 17. JSONをアルファベット順にJavaScriptで並べる方法は?
- 18. アルファベット順にアルファベットでフロントエンドに表示される文字列のセット方法
- 19. アルファベット順の文字列の長さでソートする方法は?
- 20. アルファベット順は
- 21. アルファベット順ではないインターフェイスプロパティを実装する方法
- 22. アルファベット順にプログラムを印刷する方法を停止する方法
- 23. アルファベット順に配列をソートする方法
- 24. DIVをJQueryでアルファベット順にソートする方法
- 25. CollectionViewで名前をアルファベット順に表示する方法
- 26. Android Studioでstrings.xmlをアルファベット順にソートする方法
- 27. C++で数値をアルファベット順にソートする方法
- 28. UITableViewをアルファベット順にソートする方法Sectioned?
- 29. PHPでアルファベット順に多次元配列をソートする方法
- 30. アルファベット順にbashでファイルをマージする方法
"シンボルキャストを解決できません" :( –
@SeasonedCoder:System.Linqをインクルードする必要があります。 http://msdn.microsoft.com/en-us/library/bb341406.aspxを参照してください。 –