我在想如何确定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