私はDictionary<long, object>
のkeyCollectionを使用するクラスを持っています。私は他のクラスにキーだけを渡したいと思います。アクセス速度を維持している辞書のKeyCollectionを継承する
私は辞書がtheorical O(1)
アクセス・バイ・インデックス(HashTable
など)を持っていることを知っているが、私はリストにkeyCollectionを変換する場合、アクセスがO(n)
に変更します。
O(1)
をアクセスしているクラスにkeyCollectionを渡すにはどうすればよいですか?
EDIT:私は.NET 2.0を使用しています。
ありがとうございます。
定義...あなたは「インデックスによって読み取ら」を意味ならば、アクセスは確かにO(1)のままで、この上
Contains(key)
の実装はO(1)、それが実装されているので、経由でハッシュテーブルよりも高速* O(1)でなければなりません。実際、O(1)はキーによるアクセス**にのみ適用されます**キーのリスト**では意味がありません** - あなたはそのリストで何をしたいですか? –@MarcGravell:はい、私はインデックス(.Contains())でアクセスします。 –
@MarcGravell:辞書に特定のキー値が含まれているかどうかを知るためにキーコレクションが必要です。 –