3

Apache共通コレクションでは、次の違いは何ですか:

  1. CircularFifoBuffer
  2. BoundedFifoBuffer

わかりました。最初のエントリはいっぱいになると最も古いエントリを削除し、もう 1 つは入ってきたエントリと同じ順序でエントリを削除します。しかし、同じではありませんか?

4

3 に答える 3

5

CircularFifoBuffer伸びBoundedFifoBufferます。単一のメソッドのみをオーバーライドします- add:

public boolean add(Object element) {
    if (isFull()) {
        remove();
    }
    return super.add(element);
}

したがって、唯一の違いは、いっぱいになると例外がスローされ、最も古い要素を削除BoundedFifoBufferしながら新しい要素を追加しようとすることです。CircularFifoBuffer

于 2013-02-01T09:24:03.507 に答える
3

n 個の項目をインデックス 1,2,3--n のバッファに入れるとします。

CircularFifoBuffer と BoundedFifoBuffer の両方でスペースがいっぱいになりました。

n 番目の要素がいっぱいであるため、境界付きバッファーでは、バッファー全体がいっぱいであると表示されます。

CircularFifoBuffer では、バッファがいっぱいになると、新しい要素を挿入できるように、最後に追加された要素が破棄されます。したがって、n 番目の要素がいっぱいの場合、次の要素が 1 番目のインデックスに配置されます。

于 2013-02-01T09:16:20.290 に答える
2

BoundedFifoBufferがいっぱいになると、別の要素の挿入が妨げられますしかし、CircularFifoBufferでは、いっぱいになると最古のものを削除します。

于 2013-02-01T09:28:57.153 に答える