The only one I can find is the BoundedFIFOBuffer, which is deprecated. Any others?
There are some bounded collections in Apache commons-collections, including a BoundedFifoBuffer.
In the same library, is also BoundedBuffer and CircularFifoBuffer
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);
}
};
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
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).