package com.revolsys.collection; import java.util.AbstractQueue; import java.util.Iterator; import java.util.LinkedHashSet; public class SetQueue<E> extends AbstractQueue<E> { private final LinkedHashSet<E> set = new LinkedHashSet<>(); @Override public Iterator<E> iterator() { return this.set.iterator(); } @Override public boolean offer(final E o) { this.set.add(o); return true; } @Override public E peek() { final Iterator<E> iterator = iterator(); if (iterator.hasNext()) { final E value = iterator.next(); return value; } else { return null; } } @Override public E poll() { final Iterator<E> iterator = iterator(); if (iterator.hasNext()) { final E value = iterator.next(); iterator.remove(); return value; } else { return null; } } @Override public int size() { return this.set.size(); } }