13

最も古い要素を削除できるようにするデータのハッシュに使用できる既存のデータ構造はありますか?

私が今考えているアプローチは、ディクショナリと、ディクショナリを使用して高速に検索できるキューを用意し、キューを使用してディクショナリから最も古い要素を削除できるようにすることです。

4

4 に答える 4

15

OrderedDictionaryを使用できます。これにより、挿入順序が維持されます (SortedDictionaryキーによって順序付けられる とは異なります)。次に、最も古いと見なされる最初の使用可能な要素を削除できます。

于 2013-04-02T00:41:57.547 に答える
0

System.Collections.Generic.SortedListキーでソートする単なる辞書です。キーが何らかの形で一時的なものである場合、RemoveAt別のエントリを追加するときに、特定のサイズに達したときに最初の要素を削除するために使用できます。

おそらく、あなたが言及Dictionaryしたので、おそらく一時的なキーを持っていません。しかし、aDictionaryは単なるKeyValuePair<K,V>オブジェクトのコレクションです。KeyValuePair<K,V>したがって、値が aで、キーが要素が追加された日付/時刻であるソートされたリストを持つことができます。

于 2013-04-02T00:44:20.530 に答える
0

特定の要件があるため、キュー/バッファーを背後に置いてディクショナリを実装します (たとえば、コメントで言及されている循環バッファー)。

OrderedDictionary は良い選択であり、それを行う方法に関する良い情報源です (ここに投稿したくありませんが、簡単に見つけることができます) - 要素を保持する (そしてデキューを行う) には、ArrayList よりも優れたものが必要です。 -常に「最初」を削除しているため。

于 2013-04-02T01:13:45.997 に答える