前言:TreeSet和HashSet的区别在于, HashSet不可以进行排序,TreeSet可以进行排序, 默认使用字典顺序排序, 也可以进行自定义排序。
1,但实际使用HashSet时会发现,HashSet好像会自动进行了排序,为什么呢?
原因:HashSet是set的子集,Set的底层是Map实现的,Map的实现是散列码,就是根据key的hashcode计算出来的,通过这个hashcode计算出一个元素放在数组中的index,这样是为了快速查找元素,减少相等的判断。 从而实现了自动排序的现象。
public class Test {
public static void main(String[] args) {
Set<String> tt = new HashSet<>();
tt.add("999");
tt.add(null);
tt.add(null);
tt.add("222");
tt.add("111");
tt.add("222");
System.out.println(tt);
}
}
[null, 111, 222, 999]
<