I'm looking for a implementation of java.util.Queue or something in the Google collection who behave like a Queue, but also ensure that each element of the queue is unique. (all further insertion will have no effect)
It's that possible, or will I have to do it by hand?
For now I'm using a Queue, with a LinkedList implementation, and I check the uniqueness before insertion. ( I use a side Map for doing this, add / remove element from the side map before / after the queu ). I don't like it too much.
Any input is welcome. If it's not in the java.util package, then maybe it's a bad idea?
How about a LinkedHashSet
? Its iterator preserves insertion order, but because it's a Set
, its elements are unique.
As its documentation says,
Note that insertion order is not affected if an element is re-inserted into the set.
In order to efficiently remove elements from the head of this "queue", go through its iterator:
Iterator<?> i = queue.iterator();
...
Object next = i.next();
i.remove();