1. ホーム
  2. c#

[解決済み] 辞書のキーを基準にしたその場での並び替え

2023-06-30 05:13:41

質問

C#で以下のような辞書を持っています。

Dictionary<Person, int>

で、その辞書をソートしたいのですが をキー(クラスPersonのフィールド)に関して並べ替えたい。どうすればよいのでしょうか?インターネット上のすべての利用可能なヘルプは、リストのものであり、Dictionaryのインプレースソートの特定の例はありません。どのようなヘルプでも非常に高く評価されます。

どのように解決するのですか?

をソートすることができません。 Dictionary<TKey, TValue> - は本質的に順不同です。(というか、エントリを取得する順番は実装に依存します。順序付けは設計された機能の一部ではないので、バージョン間で同じように動作することを当てにしてはいけません)。

あなたは 使用 SortedList<TKey, TValue> または SortedDictionary<TKey, TValue> で、どちらもキーでソートされます。 IEqualityComparer<T> をコンストラクタに渡すと、設定可能な方法で) - これらはあなたにとって有用であるかもしれませんか?

名前の中にある "list" という単語に少し注意を払ってください。 SortedList - は、キーと値を対応させるという点では、まだ辞書です。それは は実装されています。 であり、ハッシュコードで検索するのではなく、バイナリサーチを行います。 SortedDictionary は同様にバイナリ検索に基づいていますが、リストの代わりにツリーを経由しています。