Set:元素唯一
1.HashSet:
底层数据结构是哈希表(JDK1.7数组+链表 JDK1.8数组+链表+二叉树)元素无序(存取顺序),元素唯一。
唯一性靠元素重写hashCode()方法和equals()方法类保证的
重写hashCode()方法时为了确定元素在哈希表中的位置合理的重写是为了较少碰撞次数(减少调用equals()方法)。重写equals()方法时为了对比内容。若不重写默认比较地址值。
2.LinkedHashSet:
底层数据结构是链表和哈希表。元素有序(存取顺序一致)且唯一。链表保证了有序。哈希表保证了唯一。
3.TreeSet:
底层结构是二叉树。特点:能够对二叉树进行排序
排序方式:
自然排序(空参构造):使用自然排序需要对元素实现Comparable接口重写CompareTo方法根据返回值的正负零来决定排列位置。
比较器排序(有参构造):使用有参构造,传入的是比较器Comparator重写里面的compare方法,根据方法返回值的正负零爱决定排列位置。
比较器排序在Array.sort()方法可以用,在ArrayList.sort()方法时也可以用。