Reputation: 1001
I have some of values in my java program. I just stored those values in HashSet
. I have stored it by for loop. The values iterating by loop has been ordered differently after the set formed. How can restrict this order change of HashSet
as I get from the loop. Can anyone help me please?
Upvotes: 2
Views: 828
Reputation: 178441
A HashSet
is unordered, as the javadocs specify:
It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time. This class permits the null element.
You might want to consider using a LinkedHashSet
, which maintains the order of insertions.
An alternative is using one of the NavigableSet
implementations, such as the TreeSet
which guarantee order according to the natural order or Comparator
, if given.
Upvotes: 5
Reputation: 328608
If you want the set to maintain the insertion order, you can use a LinkedHashSet:
Implementation of the Set interface, with predictable iteration order. This implementation differs from HashSet in that it maintains a doubly-linked list running through all of its entries. This linked list defines the iteration ordering, which is the order in which elements were inserted into the set (insertion-order).
Alternatively, if you want your set to be ordered, you can use a TreeSet.
Upvotes: 10