HashSet:
底层数据结构是哈希表(散列表)。具体的是由一个元素是单向链表的数组组成。它依赖于两个方法:hashCode()和equals()方法。
执行顺序:先判断hashCode()是否相同,
如果相同
继承执行equals()方法,看其返回值:
true:元素重复,不存储。
false:元素不重复,存储。
如果不同
存储。
记住:
看到HashXxx结构的集合,就要知道,被该集合存储的元素要重写hashCode()和equals()方法。而且,是自动生成的。
TreeSet;
底层数据结构是二叉树。根据比较的返回值是否是0来决定。
如何保证元素的排序的呢?
A:自然排序 元素具备比较性
让集合中被存储的元素所属的类实现Comparable接口复写compareTo()方法。
B:比较器排序 集合具备比较性
在创建集合对象的时候,让构造方法接收一个Comparator接口的子类对象,子类复写compare()方法。
|
|