Мне интересно, как определяется место элемента в HashSet. Это через какую-то встроенную функцию хеширования?Почему элементы в HashSet в случайном порядке?
Set <String>set=new HashSet<String>();
set.add("January");
set.add("February");
set.add("July");
set.add("August");
set.add("September");
set.add("October");
set.add("Novermber");
set.add("December");
set.add("March");
set.add("April");
set.add("May");
set.add("June");
Iterator <String>it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
Я получаю этот результат
June
October
December
September
May
March
Novermber
July
January
February
April
August
Что такое объяснение для этого заказа или выход?
Есть разница между тем, что они не соответствуют порядку вставки и говорят, что они расположены случайным образом. [Как говорят документы] (https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html): «* Он не дает никаких гарантий относительно порядка итерации набора * , –
BTW, относительно вашего вопроса о повторном хешировании: это не дубликат, и это совершенно законный вопрос. Но есть много хэш-карт, и они ведут себя по-разному. – biziclop