LimitedArrayDeque extends ArrayDeque<T> { @Override public boolean add(T element) { while (size() > limit) { removeFirst(); } return super.add(element); } LimitedArrayDeque(int capacity); @Override boolean add(T element);  }
@Test public void testDeque() { LimitedArrayDeque<String> limitedArrayDeque = new LimitedArrayDeque<>(4); limitedArrayDeque.add("1"); limitedArrayDeque.add("2"); limitedArrayDeque.add("3"); limitedArrayDeque.add("4"); limitedArrayDeque.add("5"); assertEquals(4, limitedArrayDeque.size()); int i = 2; for (String s : limitedArrayDeque) { assertEquals("" + i++, s); } }