114

私はそれを見つけて、同じインターフェースSortedList<TKey, TValue> SortedDictionary<TKey, TValue>Dictionary<TKey, TValue>実装しています。

  1. いつ何度も選択する必要がSortedListありますSortedDictionaryDictionary?
  2. アプリケーションに関してSortedListとはどう違いますか?SortedDictionary
4

6 に答える 6

107
  1. 2 つのいずれかの要素を反復処理すると、要素が並べ替えられます。ではそうではありませんDictionary<T,V>

  2. 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) よりも高速です。

于 2009-09-15T13:23:44.877 に答える
72

ここに画像の説明を入力

辞書の違いについて言及します。

上の図はDictionary<K,V>、すべての場合においてアナログよりも同等または高速であることを示していますSortedが、要素の順序が必要な場合、たとえばそれらを印刷する場合は、Sorted1 つが選択されます。

ソース: http://people.cs.aau.dk/~normark/oop-csharp/html/notes/collections-note-time-complexity-dictionaries.html

于 2013-10-31T09:29:46.843 に答える
27

パフォーマンス テスト - 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>
于 2015-11-12T13:29:30.003 に答える
9
  1. コレクションを繰り返し処理するときに、コレクションをキーでソートしたい場合。データを並べ替える必要がない場合は、辞書だけを使用したほうがパフォーマンスが向上します。

  2. SortedList と SortedDictionary はほぼ同じことを行いますが、実装が異なるため、ここで説明されている長所と短所が異なります。

于 2009-09-15T13:25:40.720 に答える