1. ホーム
  2. c#

[解決済み】SortedListとSortedDictionaryの違いは何ですか?

2022-04-17 10:02:25

質問

との間に実用的な差はあるのでしょうか? SortedList<TKey,TValue> SortedDictionary<TKey,TValue> ? 特にどちらかを使って、もう一方を使わないという状況はありますか?

解決方法は?

そうですね。両者の性能特性は大きく異なります。おそらく SortedListSortedTree の方が、より実装に近い形で反映されるからです。

それぞれのMSDNドキュメントを見てください( SortedList , SortedDictionary をご参照ください。以下はその要約です。 SortedDictionary のドキュメントを参照)。

は、その SortedDictionary<TKey, TValue> ジェネリック クラスは、二項探索木で O(log n)検索、ここでnは 辞書の要素数 この点では SortedList<TKey, TValue> ジェネリック クラスがあります。この2つのクラスは似たような オブジェクトモデルであり、どちらもO(log n)である。 を検索することができます。この2つのクラスは は、メモリ使用量と速度が異なります。 の挿入と削除を行う。

  • SortedList<TKey, TValue> が少ない。 よりもメモリが SortedDictionary<TKey, TValue> .

  • SortedDictionary<TKey, TValue> があります。 より高速な挿入と削除 の操作で、O(log n)となります。 がO(n)であるのとは対照的に SortedList<TKey, TValue> .

  • リストを一度に入力する場合 ソートされたデータから SortedList<TKey, TValue> よりも高速です。 SortedDictionary<TKey, TValue> .

( SortedList は、ツリーを使用するのではなく、実際にはソートされた配列を維持します。要素を見つけるためにバイナリサーチを使うのは変わりません)。