diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/collections/FixedSizeQueue.java b/li.strolch.utils/src/main/java/li/strolch/utils/collections/FixedSizeQueue.java new file mode 100644 index 000000000..072bdb606 --- /dev/null +++ b/li.strolch.utils/src/main/java/li/strolch/utils/collections/FixedSizeQueue.java @@ -0,0 +1,33 @@ +package li.strolch.utils.collections; + +import java.util.Collection; +import java.util.LinkedList; + +public class FixedSizeQueue extends LinkedList { + + private static final long serialVersionUID = 1L; + + private int maxSize; + + public FixedSizeQueue(int size) { + this.maxSize = size; + } + + @Override + public boolean add(E e) { + boolean b = super.add(e); + if (size() >= this.maxSize) { + removeRange(0, size() - this.maxSize); + } + return b; + } + + @Override + public boolean addAll(int index, Collection c) { + boolean b = super.addAll(index, c); + if (size() >= this.maxSize) { + removeRange(0, size() - this.maxSize); + } + return b; + } +} \ No newline at end of file