我想知道如何确定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());
}
Run Code Online (Sandbox Code Playgroud)
我得到了这个结果
June
October
December
September
May
March
Novermber
July
January
February
April
August
Run Code Online (Sandbox Code Playgroud)
这个订单或输出的解释是什么?
HashSet基于数组.数组中的项目索引是基于hashCode()函数计算的.
HashSet中的Iterator移动数组元素,跳过null元素.这就是为什么你的订单是"奇怪的".如果您需要保留广告订单,请使用LinkedHashSet.