I need some class/interface name that describes an immutable, ordered set (in input order, like LinkedHashSet
). I can of course just use the class like this:
class Foo {
public final Set<Long> frozenOrderedSet;
public Foo(List<Long> input) {
frozenOrderedSet = Collections.unmodifiableSet(new LinkedHashSet(input));
}
}
But this would not clarify my approach. I would like to make it clear to everyone reading the source that the Set is unmodifiable and unique while maintaining it's order with for(Long l : set){}
.
Guava's ImmutableSet provides a high-performance, immutable Set with reliable, user-specified iteration order.
There are also variations like ImmutableSortedSet.