Порядок отображения объектов будет зависеть от конечного количества сегментов HashSet. Изменяя коэффициент загрузки и / или начальную емкость, вы можете изменить порядок, в котором заканчиваются элементы.
В следующем примере вы можете увидеть эти подтверждения каждый результат в различном порядке.
public static void main(String...args) throws IOException {
printOrdersFor(8, 2);
printOrdersFor(8, 1);
printOrdersFor(8, 0.5f);
printOrdersFor(32, 1f);
printOrdersFor(64, 1f);
printOrdersFor(128, 1f);
}
public static void printOrdersFor(int size, float loadFactor) {
Set<Integer> set = new HashSet<Integer>(size, loadFactor);
for(int i=0;i<=100;i+=10) set.add(i);
System.out.println("new HashSet<Integer>("+size+", "+loadFactor+") adding 0,10, ... 100 => "+set);
}
печать
new HashSet<Integer>(8, 2.0) adding 0,10, ... 100 => [0, 50, 100, 70, 40, 10, 80, 20, 90, 60, 30]
new HashSet<Integer>(8, 1.0) adding 0,10, ... 100 => [0, 50, 100, 70, 20, 80, 10, 40, 90, 30, 60]
new HashSet<Integer>(8, 0.5) adding 0,10, ... 100 => [0, 100, 70, 40, 10, 50, 20, 80, 90, 30, 60]
new HashSet<Integer>(32, 1.0) adding 0,10, ... 100 => [0, 100, 70, 40, 10, 50, 80, 20, 90, 60, 30]
new HashSet<Integer>(64, 1.0) adding 0,10, ... 100 => [0, 70, 10, 80, 20, 90, 30, 100, 40, 50, 60]
new HashSet<Integer>(128, 1.0) adding 0,10, ... 100 => [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]