The only one I can find is the BoundedFIFOBuffer, which is deprecated. Any others?
BoundedFIFOBuffer
in Apache Commons Collections (which I assume is what you're referring to) is not deprecated, it has just moved packages. The original one in org.apache.commons.collections
is deprecated, and has instead been moved to org.apache.commons.collections.buffer
There are some bounded collections in Apache commons-collections, including a BoundedFifoBuffer.
In the same library, is also BoundedBuffer and CircularFifoBuffer
Why not just use a LinkedBlockingQueue
and use the non-blocking methods offer
(or add
) and poll
to access it? You can create it with a fixed capacity (i.e. to make it bounded).
I've been using Google Collections recently. I think you could have a Java Generics solution pretty easily with it. There is a class called ForwardingList which I think you could implement this idea pretty easily. Obviously not as easy as just using BoundedFifoBuffer (non-generic) or ArrayBlockingQueue.
final ArrayList<MyObject> realList = Lists.newArrayList();
final List<MyObject> list = new ForwardingList<MyObject>() {
protected List<MyObject> delegate() {
return realList;
}
public boolean add(MyObject obj) {
if(delegate().size() > 100) return false;
return delegate().add(obj);
}
};