Set集合
特点:
一个不包含重复元素的 collection,由于它不能直接实例化,一般情况 使用子实现类实例化:HashSet、TreeSet
HashSet集合
特点:元素唯一的,存储和取出不一致(无序性),特别是它不保证该顺序恒久不变。
LinkedHashSet(HashSet的子类):
底层依赖于哈希表和链接列表实现,由哈希表保证元素唯一,由链表保证元素有序
特点:有序性和唯一性
使用Set集合存储自定义对象,HashSet集合底层add方法依赖于HashMap的put方法
依赖于hashCode()和equals()方法
hashCode():保证唯一性(比较对象的地址值是否相同,如果地址值相同,还需要比较内容是否相同)
equals():默认比较的地址值相同,要比较内容是否相同,必须在当前类中重写equals()方法
TreeSet集合
概述:使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。
特点:基于TreeMap的实现,底层数据结构是一种红黑树结构,根据使用不同的构造方法,排序不同
TreeSet集合两种排序
通过无参构造放TreeSet() ;
自然排序,对于自定义的类实现Comparable接口,重写compareTo(T o)方法
比较器排序:是一个有参构造方法
public TreeSet(Comparator comparator):形参是一个接口类型,需要接口的子实现类对象
总结
Collection集合中每个集合的特点描述
- List
1.1 ArrayList:
底层数据结构:可变数组的实现。
查询快,增删慢a
从线程安全方面考虑:此实现不是同步的,线程不安全,执行效率高!
1.2 Vector:
底层数据结构:对象数组
查询快,增删慢
线程安全角度考虑:Vector 是同步的,线程安全,执行效率低
1.3 LinkedList(特有功能:模拟栈结构的特点)
底层数据结构:链接列表实现
查询慢,增删快
线程安全角度考虑:此实现不是同步的,线程不安全,执行效率高 - Set
2.1 HashSet:
底层数据结构是哈希表(元素是链表的数组),哈希表依赖于哈希值存储,元素唯一的,存储和取出不一致(无序性),特别是它不保证该顺序恒久不变。
2.2 TreeSet:
基于TreeMap的实现,底层数据结构是一种红黑树结构(红黑树是一种自平衡的二叉树),根据使用不同的构造方法,排序不同