2
import static java.lang.System.out;
import java.util.*;


class MyClass{
  public static void main(String [] args){
    Set<Integer> set=new HashSet<>();
    for(int i=0;i<1000;i++){
     set.add((int)Math.ceil(Math.random()*100));
    }
     out.print(set);
  }
}

No_Name
  • 27

2 Answers2

3

Порядок не гарантирован и порядок гарантированно отсутствует это разные вещи.

Некое подобие порядка присутствует потому, что, хеш значения типа Integer обычно равен самому этому значению. Это не дает гарантии, что значения будут упорядочены, но в некоторых случаях так и будет.

Set<Integer> s1 = new HashSet<>(16);
s1.add(5);
s1.add(3);
s1.add(15);
s1.add(7);

System.out.println(s1); // [3, 5, 7, 15]

а в других - нет

Set<Integer> s2 = new HashSet<>(16);
s2.add(5);
s2.add(20);
s2.add(4);
s2.add(21);

System.out.println(s2); // [20, 4, 5, 21]

(Это вывод на моей системе, на других версиях версиях виртуальной машины он теоретически может отличаться.)

extrn
  • 10,941
0

https://ideone.com/La8t4n

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone { public static void main (String[] args) throws java.lang.Exception { Set<Integer> set = new HashSet<>();

for(int i=0; i&lt;100; i++) {
  set.add((int)Math.ceil(Math.random()*1000000));
}

System.out.print(set);

} }

[558089, 631818, 60937, 127496, 483853, 500234, 737048, 580891, 146452, 253461, 609311, 404767, 766225, 198942, 66078, 611113, 383016, 594489, 174643, 233527, 663858, 758578, 966196, 524597, 295233, 377922, 107337, 123468, 28761, 87643, 685652, 338277, 69729, 620136, 523621, 358246, 619114, 365665, 346722, 380527, 145773, 954751, 635515, 996988, 127355, 813682, 198275, 937358, 938893, 517007, 648323, 801670, 880512, 1166, 102286, 679064, 812952, 351634, 516253, 303770, 66463, 361882, 264098, 529071, 327086, 796322, 366773, 230066, 144305, 834489, 776126, 558258, 407226, 648884, 819634, 553654, 35774, 646604, 135112, 865472, 242125, 519880, 130769, 668635, 943324, 756696, 805592, 570576, 124632, 255967, 671956, 386267, 125159, 405742, 735968, 345579, 829177, 930552, 554228, 234748]

Qwertiy
  • 123,725
  • Хм, а на вопрос-то это не отвечает. Если поменять 1000000 на 100 (как в вопросе), то вывод будет таки упорядоченным. – Yaant Oct 30 '20 at 17:58
  • @Yaant, я потому и поменял. Думаю, до 100 хэши совпадают с числами, а там больше 100 корзин, но это так, наугад. – Qwertiy Oct 30 '20 at 18:03