Search code examples
javasetjava-collections-api

Why set <Integer> is sorting added values?


When I start to add value into Set<Integer> I get sorting elements. Please refer to this example:

Set<Integer> generated = new HashSet<Integer>();
generated.add(2);
generated.add(1);
generated.add(0);

Here I get sorting Set [0, 1, 2]. I would like to get value as I add to generated object.


Solution

  • A HashSet does not have a predictable order for elements. Use a LinkedHashSet to preserve insertion order of elements in a set:

    Hash table and linked list implementation of the Set interface, with predictable iteration order.

    Set<Integer> generated = new LinkedHashSet<Integer>();
    generated.add(2);
    generated.add(1);
    generated.add(0);