0

名前と関連するコンテンツで構成される一連のデータがあります。したがって、私はそれらのアイテムのようなものを使用したり、それらのアイテムを保管しHashTableたりします。Dictionary

これらのデータを 2 つの優先順位で並べ替える必要があります。最初にアルファベット順に配置し、次にいくつかの項目を特定の順序で先頭に配置する必要があります。

アルファベット順が私の唯一の要件である場合は、SortedDictionary. このディクショナリは、キーに基づいて要素を自動的に並べ替えます。

私が探しているのは、私ができるクラスです:

  1. ランダムな順序で要素を追加する
  2. すべての要素をアルファベット順に並べ替える
  3. 要素を先頭に移動 (または削除して挿入) します (または、より一般的には、必要な場所に移動します)。
4

3 に答える 3

1

必要なことを行う組み込みのコレクションはありませんが、独自のコレクションを比較的簡単に構築できます。

  • の実装を書くIDictionary<TKey,TValue>
  • Dictionary<TKey,TValue> dictaと aList<TKey> keysを中に入れる
  • に要素を追加するときはdict、そのキーも に追加しますkeys
  • 反復が要求された場合、反復keysしてから、dict

コレクションがそのように編成されている場合、辞書エントリとは別にキーを並べ替えることができます。辞書を変更する操作では二重の「簿記」が行われるため、実装には注意が必要です。それ以外は、ソリューションは比較的簡単です。

于 2012-12-06T10:41:16.820 に答える
1

このデータの名前が重複する可能性がある場合は、情報を提供しませんでした。通常、このデータを保持するために別の方法を使用できると思います。辞書の本質は、キーが一意であるキー/値データを保持することです。要素の順序は辞書の本質ではありません。私の意見では、これはより多くのリストの問題です。したがって、辞書と Linq to Objects を混在させることができます。しかし、ジェネリックを使用してみてください

    List< KeyValuePair< TKey, TValue>>.
于 2012-12-06T10:41:40.627 に答える
1

Why not look at SortedList<TKey, TValue>?

That should have appropriate functions to let you do what you want and it's fast for sorting!

于 2012-12-06T11:48:35.557 に答える