2017-05-10 16 views
-1

バッファーを実装していますが、どの構造体を使用すべきかわかりません。バッファーに最適な構造

私はLinkedListのいずれかを考えていましたが、値を保存する必要がない場合でも、HashMap(ただし、単純にnull値を入れることができます)。

最大効率として、containsKeyの複雑さがO(1)であるので、私はHashMapを使用することを考えていました。

代わりに、LinkedList.containsの複雑さは、O(N)です。

でも、LinkedListやその他の構造を破棄するかどうかはわかりません。

ありがとうございます。

答えて

0

バッファーはできるだけ高速でなければならないので、私はarray(ほとんどのalghoritmsが使用する)を使用します。その複雑さはO(1)です。その他の構成はputremove方法が原因ハッシュ衝突で頻繁に呼び出され非常に遅い、することができ、でもO(1)アクセスして、方法(余分な時間)、さらにhashmapを呼び出す必要があります。

+0

しかし、要素をランダムに削除する必要があります。配列を使用して、削除したい要素を見つけるために配列を何度も繰り返し処理する必要があります。 – Betrayal

+0

あなたはこれを行うことができます:オブジェクトを配列に配置し、使用されたインデックスをオブジェクトに添付します。削除する場合は、配列内の位置を見つけるために添えられたインデックスを使用するだけです。 – matoni

+0

はい、私はそれを行うことができます。もちろん、削除することによって、セルをnullに設定することを意味します。そうでなければ、私は新しい配列を作成し、残りの要素をその配列にコピーする必要があります。 – Betrayal

関連する問題