Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This class does the job using composition instead of inheritance (other answers here) which removes the possibility of certain side-effects (as covered by Josh Bloch in Essential Java). Trimming of the underlying LinkedList occurs on the methods add,addAll and offer.</p> <pre><code>import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; public class LimitedQueue&lt;T&gt; implements Queue&lt;T&gt;, Iterable&lt;T&gt; { private final int limit; private final LinkedList&lt;T&gt; list = new LinkedList&lt;T&gt;(); public LimitedQueue(int limit) { this.limit = limit; } private boolean trim() { boolean changed = list.size() &gt; limit; while (list.size() &gt; limit) { list.remove(); } return changed; } @Override public boolean add(T o) { boolean changed = list.add(o); boolean trimmed = trim(); return changed || trimmed; } @Override public int size() { return list.size(); } @Override public boolean isEmpty() { return list.isEmpty(); } @Override public boolean contains(Object o) { return list.contains(o); } @Override public Iterator&lt;T&gt; iterator() { return list.iterator(); } @Override public Object[] toArray() { return list.toArray(); } @Override public &lt;T&gt; T[] toArray(T[] a) { return list.toArray(a); } @Override public boolean remove(Object o) { return list.remove(o); } @Override public boolean containsAll(Collection&lt;?&gt; c) { return list.containsAll(c); } @Override public boolean addAll(Collection&lt;? extends T&gt; c) { boolean changed = list.addAll(c); boolean trimmed = trim(); return changed || trimmed; } @Override public boolean removeAll(Collection&lt;?&gt; c) { return list.removeAll(c); } @Override public boolean retainAll(Collection&lt;?&gt; c) { return list.retainAll(c); } @Override public void clear() { list.clear(); } @Override public boolean offer(T e) { boolean changed = list.offer(e); boolean trimmed = trim(); return changed || trimmed; } @Override public T remove() { return list.remove(); } @Override public T poll() { return list.poll(); } @Override public T element() { return list.element(); } @Override public T peek() { return list.peek(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload