Is there an insertion order preserving Set that also implements List?
I'm trying to find an implementation of java.util.List
and java.util.Set
at the same time in Java. I want this class to allow only unique elements (as Set
) and preserve their order (like List
). Does it exist in JDK 6?
It's important to have List<T>#add(int, T)
so I can insert into a specific position.
TreeSet
is sorted by element order; LinkedHashSet
retains insertion order. Hopefully one of those is what you were after.
You've specified that you want to be able to insert at an arbitrary location, I suspect you'll have to write your own - just create a class containing a HashSet<T>
and an ArrayList<T>
; when adding an item, check whether or not it's in the set before adding it to the list.
Alternatively Apache's commons-collections4 offers ListOrderedSet
and SetUniqueList
, which behave similarly and should meet the given requirements.
LinkedHashSet is the answer.
Iteration ordering and uniqueness.
http://download.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html