Collection接口:表示一组对象
List接口:元素有序、可重复、可以使用索引访问元素
ArrayList类:
底层结构:数组
效率:查询快,增删慢
线程不安全的,效率相对高
LinkedList类:
底层结构:链表
效率:增删快,查询慢
Vector类:
底层结构:数组
线程安全,效率相对低,不推荐使用。
Set接口:元素唯一
HashSet类:
特点:元素唯一,无序的
底层结构:哈希表=数组+链表+(红黑树jdk8)
效率:综合效率高
去重原理:
先比较hash值,再进行equals比较,如果都相同,则认为元素相同。
LinkedHashSet类:
是HashSet的子类
特点:元素唯一,有序
底层结构:哈希表基础上维护一个链表,以保证元素迭代顺序
效率:相对HashSet略低
TreeSet类:
特点:元素唯一,无序,实现类排序
底层结构:红黑树-一种相对平衡的二叉树
效率:查询效率高于链表
存取原理:
元素必须可以比较大小,大的放右边,小的放左边;
取元素,按照中序遍历方式:左-》中-》右
去重和排序原理:
必须要求元素可以比较大小,要么元素类型实现Comparable接口(自然排序);要么传入一个实现了Comparator接口的比较器,用于比较两个元素的大小(定制排序)