java - Does HashSet do the sort job internal? -


my set sorted, , not.

here example:

public class setofinteger {     public static void main(string[] args) {         random rand = new random(47);         set<integer> intset = new hashset<>();         (int = 0; < 10; i++) {             int j = rand.nextint(30);             system.out.print(j + " ");             intset.add(j);         }         system.out.println();         system.out.println(intset);     } } 

the result shows set not sorted.

8 5 13 11 1 29 28 20 12 7  [1, 20, 5, 7, 8, 11, 12, 29, 28, 13] 

when change termination expression i < 20 in statement, result shows set become sorted.

8 5 13 11 1 29 28 20 12 7 18 18 21 19 29 28 28 1 20 28  [1, 5, 7, 8, 11, 12, 13, 19, 18, 21, 20, 29, 28] 

it strange, it? don't know how explain it, , need help, thank much.

a hashset not guarantee sorted iteration, under specific circumstances internal data structure may act bucket sort.

specifically, integer keys in range [0,65535] , table size greater largest key, index of bucket key stored in equal key itself, , since iterator iterates in bucket order, emits elements in sorted order.


Comments