HashSet是散列表,按照哈希码的顺序进行排列,它的特征是不保证元素的顺序;
TreeSet按照升序进行存储,而不论存入的顺序如何。
下面写两个例子说明这两种集合类的区别:
import java.util.HashSet;
import java.util.TreeSet;
public class demoHashSet{
public static void main(String[] args){
//使用HashSet加入5个整型元素并输出
HashSet<Integer> hs = new HashSet<Integer>();
hs.add(1);
hs.add(2);
hs.add(3);
hs.add(5);
hs.add(9);
System.out.println(hs);
//使用TreeSet加入5个字符串元素并输出
TreeSet<String> ts = new TreeSet<String>();
ts.add("I");
ts.add("L");
ts.add("O");
ts.add("V");
ts.add("E");
System.out.println(ts);
}
}
编译执行
可见,HashSet输出的顺序是按照哈希值,有可能跟输入的顺序一致,也有可能不一致。
而TreeSet输出的顺序跟加入的顺序无关,它是按照字母表的顺序进行内部排列的。