これはアルゴリズムの問題です。
私は持っていDictionary<object,Queue<object>>
ます。各キューには、1つ以上の要素が含まれています。ディクショナリから要素が1つしかないすべてのキューを削除したいと思います。それを行うための最速の方法は何ですか?
擬似コード:foreach(item in dict) if(item.Length==1) dict.Remove(item);
ループでそれを行うのは簡単です(もちろん、foreachではありません)が、ここではどちらのアプローチが最速か知りたいです。
必要な理由:その辞書を使用して、オブジェクトの大規模なセットで重複する要素を検索します。辞書のキーはオブジェクトのハッシュの一種であり、値は同じハッシュで見つかったすべてのオブジェクトのキューです。複製のみが必要なので、関連付けられたキューに1つのオブジェクトがあるすべてのアイテムを削除する必要があります。
アップデート:
通常の場合、オブジェクトの大規模なセットにわずかな重複があることを知っておくことが重要な場合があります。1%以下としましょう。したがって、辞書をそのままにして、最初の辞書から選択した要素だけを使用してスクラッチから新しい辞書を作成し、最初の辞書を完全に削除する方が速い場合があります。特定のアルゴリズムで使用される計算辞書クラスのメソッドの複雑さに依存すると思います。
この問題を理論的なレベルで見たいと思っています。教師として生徒と話し合いたいからです。本当に簡単だと思うので、具体的な解決策は自分で提供しませんでした。問題は、どちらのアプローチが最良で、最速かということです。