package com.workshare.msnos.soup; import java.util.AbstractQueue; import java.util.Iterator; public class SingleElementQueue<T> extends AbstractQueue<T> { private T item; public SingleElementQueue() { this(null); } public SingleElementQueue(T item) { this.item = item; } @Override public boolean offer(T e) { item = e ; return true; } @Override public T peek() { return item; } @Override public T poll() { T res = item; item = null; return res; } @Override public Iterator<T> iterator() { final Object[] pointer = new Object[1]; pointer[0] = item; return new Iterator<T>() { @Override public boolean hasNext() { return pointer[0] == null ? null : true; } @Override @SuppressWarnings("unchecked") public T next() { T res = (T)pointer[0]; pointer[0] = null; return res; } @Override public void remove() { throw new UnsupportedOperationException(); }}; } @Override public int size() { return (item == null ? 0 : 1); } }