sra*_*l07 2 java string int arraylist hashset
我有一些字符串数组,实际上只有来自文件的整数列表.我将其转换为HashSet,以便删除重复项,如下所示:
Set<String> intSet = new HashSet<String>(Arrays.asList(strArr));
我期望它的所有数字都是有序的但是当然,因为这是一个字符串而不是整数列表,它可能不按顺序排列.但每当我尝试打印这个HashSet时,我总是得到如下输出:
[3, 2, 1, 4]
[3, 2, 5, 4]
每次,如果存在3,则认为它是第一个元素.我不知道为什么这样做?任何人都可以解释我这个.
HashSet不保持可预测的顺序,它将取决于hashCode对象引用.如果要维护元素的插入顺序,请使用a LinkedHashSet.如果要保持元素始终排序,请使用a TreeSet.
返回的顺序取决于内部散列算法,您应该对此无动于衷.(散列算法背后的想法是在内部表中统一分散键值.由于此算法可能具有确定性,因此每次可能会返回3个).
如果你想要按照词法顺序返回,那就使用TreeSet.
要保留插入顺序,请使用LinkedHashSet.
| 归档时间: | 
 | 
| 查看次数: | 449 次 | 
| 最近记录: |