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被排序.为什么这样?
HashSet是绝对不能保证进行排序.顺序是不能保证在所有.
从iterator()方法的文档:
返回此set中元素的迭代器.元素以无特定顺序返回.
HashSet旨在通过平等非常快速地插入和检查元素的存在.就这样.
如果需要排序,则应使用或SortedSet等实现.TreeSetConcurrentSkipListSet