2

stringとの 2 つのタイプを格納するためのコレクションが必要ですDateTime

stringコレクションのキーであり、コレクションへDateTimeの挿入時間です。ある方法でコレクションからアイテムを削除したいFIFO

コレクションは重複キーを拒否し、クエリ可能にする必要DateTimeがあります。そのため、特定の日付よりも古いアイテムの数が必要な場合は、回答できます。

4

2 に答える 2

3

ほとんどの場合、ルックアップする必要がある2つのことを示したように、これらすべてのことを最大の効率で行う単一の組み込みC#データ型はありません。

そうは言っても、基本的にはすぐに使用できる、必要なすべての機能を提供するDictionary<string, DateTime>最も単純なソリューションになります。ただし、そのコレクションは、DateTime ルックアップに O(n) の複雑さを与え、O(1) よりも悪い削除時間になります。それはおそらく大したことではありませんが、パフォーマンス要件、データセットの予想サイズ、または最も頻繁に発生するアクセスの種類について説明していませんでした。

「DateTime よりも古い」ルックアップのパフォーマンスと FIFO の削除を改善するために、SortedList などの 2 番目のインデックスを保持することもできます。メモリ使用量が増え、全体的な挿入時間はやや遅くなりますが、DateTime および削除クエリは高速になります。「older-than-DateTime」の場合、 SortedList.Keys のバイナリ検索を使用できます。

于 2011-01-02T02:52:01.410 に答える
1

あなたSystem.Collections.Generic.Dictionary<string, DateTime>のトリックを行うべきだと思われます。必要に応じてコレクションを処理するメソッドがあります。

于 2011-01-02T02:36:48.807 に答える