HashSet不保证排序?

Gop*_*pal 4 java

import java.util.*;
public class DuplicateCheckMain {
 public static void main(String[] gopal){
  Integer[] args = {6,9,2,55,100,1,6,8,9};
  Integer[] args1 = {3,6,2,3,5};
  Set S = new HashSet();
  DuplicateCheck.checkDuplicate(S,args,new String("HashSet"));
  Set S1 = new HashSet();
  DuplicateCheck.checkDuplicate(S1,args1,new String("HashSet"));

  S = new TreeSet();
  DuplicateCheck.checkDuplicate(S,args,new String("TreeSet"));

  S = new LinkedHashSet();
  DuplicateCheck.checkDuplicate(S,args,new String("LinkedHashSet"));

 }
}

public class DuplicateCheck {

 public static void checkDuplicate(Set S, Integer[] args, String setname){
  for(int i = 0;i<args.length;i++){
   if(!S.add(args[i])){System.out.println("Duplicate element "+args[i]);}
  }
  System.out.println(S +" "+ setname);
 }
}
Run Code Online (Sandbox Code Playgroud)

问题:对于带引用S的HashSet,HashSet未排序.但是对于参考S1,HashSet被排序.为什么这样?

Jon*_*eet 7

HashSet绝对不能保证进行排序.顺序是不能保证在所有.

iterator()方法的文档:

返回此set中元素的迭代器.元素以无特定顺序返回.

HashSet旨在通过平等非常快速地插入和检查元素的存在.就这样.

如果需要排序,则应使用或SortedSet等实现.TreeSetConcurrentSkipListSet