最も古い要素を削除できるようにするデータのハッシュに使用できる既存のデータ構造はありますか?
私が今考えているアプローチは、ディクショナリと、ディクショナリを使用して高速に検索できるキューを用意し、キューを使用してディクショナリから最も古い要素を削除できるようにすることです。
最も古い要素を削除できるようにするデータのハッシュに使用できる既存のデータ構造はありますか?
私が今考えているアプローチは、ディクショナリと、ディクショナリを使用して高速に検索できるキューを用意し、キューを使用してディクショナリから最も古い要素を削除できるようにすることです。
OrderedDictionaryを使用できます。これにより、挿入順序が維持されます (SortedDictionary
キーによって順序付けられる とは異なります)。次に、最も古いと見なされる最初の使用可能な要素を削除できます。
System.Collections.Generic.SortedList
キーでソートする単なる辞書です。キーが何らかの形で一時的なものである場合、RemoveAt
別のエントリを追加するときに、特定のサイズに達したときに最初の要素を削除するために使用できます。
おそらく、あなたが言及Dictionary
したので、おそらく一時的なキーを持っていません。しかし、aDictionary
は単なるKeyValuePair<K,V>
オブジェクトのコレクションです。KeyValuePair<K,V>
したがって、値が aで、キーが要素が追加された日付/時刻であるソートされたリストを持つことができます。
特定の要件があるため、キュー/バッファーを背後に置いてディクショナリを実装します (たとえば、コメントで言及されている循環バッファー)。
OrderedDictionary は良い選択であり、それを行う方法に関する良い情報源です (ここに投稿したくありませんが、簡単に見つけることができます) - 要素を保持する (そしてデキューを行う) には、ArrayList よりも優れたものが必要です。 -常に「最初」を削除しているため。