我在想如何確定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):「*它不保證集合的迭代順序*」 。 –
順便說一句,關於你重新哈希的問題:它不是重複的,這是一個完全合法的問題。但是有很多基於散列的地圖,它們的行爲非常不同。 – biziclop