私はそれを見つけて、同じインターフェースSortedList<TKey, TValue>
SortedDictionary<TKey, TValue>
をDictionary<TKey, TValue>
実装しています。
- いつ何度も選択する必要が
SortedList
ありますSortedDictionary
かDictionary
? - アプリケーションに関して
SortedList
とはどう違いますか?SortedDictionary
私はそれを見つけて、同じインターフェースSortedList<TKey, TValue>
SortedDictionary<TKey, TValue>
をDictionary<TKey, TValue>
実装しています。
SortedList
ありますSortedDictionary
かDictionary
?SortedList
とはどう違いますか?SortedDictionary
2 つのいずれかの要素を反復処理すると、要素が並べ替えられます。ではそうではありませんDictionary<T,V>
。
MSDNは、 と の違いに対処していSortedList<T,V>
ますSortedDictionary<T,V>
。
SortedDictionary(TKey, TValue) ジェネリック クラスは、 O(log n) 検索を行う二分探索ツリーです。ここで、n はディクショナリ内の要素の数です。この点では、SortedList(TKey, TValue) ジェネリック クラスに似ています。2 つのクラスのオブジェクト モデルは類似しており、どちらも O(log n) の取得が可能です。2 つのクラスの違いは、メモリの使用と挿入と削除の速度です。
SortedList(TKey, TValue) は、SortedDictionary(TKey, TValue) よりも少ないメモリを使用します。
SortedDictionary(TKey, TValue) は、ソートされていないデータの挿入および削除操作が高速です。SortedList(TKey, TValue) の O(n) とは対照的に、O(log n) です。
リストが並べ替えられたデータから一度に作成される場合、SortedList(TKey, TValue) は SortedDictionary(TKey, TValue) よりも高速です。
辞書の違いについて言及します。
上の図はDictionary<K,V>
、すべての場合においてアナログよりも同等または高速であることを示していますSorted
が、要素の順序が必要な場合、たとえばそれらを印刷する場合は、Sorted
1 つが選択されます。
パフォーマンス テスト - SortedList vs. SortedDictionary vs. Dictionary vs. Hashtableの結果を要約すると、さまざまなシナリオの最良から最悪までの結果:
メモリ使用量:
SortedList<T,T>
Hashtable
SortedDictionary<T,T>
Dictionary<T,T>
挿入:
Dictionary<T,T>
Hashtable
SortedDictionary<T,T>
SortedList<T,T>
検索操作:
Hashtable
Dictionary<T,T>
SortedList<T,T>
SortedDictionary<T,T>
foreach ループ操作
SortedList<T,T>
Dictionary<T,T>
Hashtable
SortedDictionary<T,T>
コレクションを繰り返し処理するときに、コレクションをキーでソートしたい場合。データを並べ替える必要がない場合は、辞書だけを使用したほうがパフォーマンスが向上します。
SortedList と SortedDictionary はほぼ同じことを行いますが、実装が異なるため、ここで説明されている長所と短所が異なります。