Apache共通コレクションでは、次の違いは何ですか:
- CircularFifoBuffer
- BoundedFifoBuffer
わかりました。最初のエントリはいっぱいになると最も古いエントリを削除し、もう 1 つは入ってきたエントリと同じ順序でエントリを削除します。しかし、同じではありませんか?
Apache共通コレクションでは、次の違いは何ですか:
わかりました。最初のエントリはいっぱいになると最も古いエントリを削除し、もう 1 つは入ってきたエントリと同じ順序でエントリを削除します。しかし、同じではありませんか?
CircularFifoBuffer
伸びBoundedFifoBuffer
ます。単一のメソッドのみをオーバーライドします- add
:
public boolean add(Object element) {
if (isFull()) {
remove();
}
return super.add(element);
}
したがって、唯一の違いは、いっぱいになると例外がスローされ、最も古い要素を削除BoundedFifoBuffer
しながら新しい要素を追加しようとすることです。CircularFifoBuffer
n 個の項目をインデックス 1,2,3--n のバッファに入れるとします。
CircularFifoBuffer と BoundedFifoBuffer の両方でスペースがいっぱいになりました。
n 番目の要素がいっぱいであるため、境界付きバッファーでは、バッファー全体がいっぱいであると表示されます。
CircularFifoBuffer では、バッファがいっぱいになると、新しい要素を挿入できるように、最後に追加された要素が破棄されます。したがって、n 番目の要素がいっぱいの場合、次の要素が 1 番目のインデックスに配置されます。
BoundedFifoBufferがいっぱいになると、別の要素の挿入が妨げられます。しかし、CircularFifoBufferでは、いっぱいになると最古のものを削除します。