概述
List、Set接口都是继承于Collection主接口,而Map为独立接口
1、List接口下有ArrayList、Vector、LinkedList实现类
2、Set接口下有HashSet、LinkedHashSet、TreeSet实现类
3、Map下有HashMap、LikedHashMap、Hashtable、TreeMap实现类
特点
Collection接口:
——List接口 有序,可重复
ArrayList
优点: 底层数据结构是数组,查询快,增删慢
缺点: 线程不安全,效率高
LinkedList
优点: 底层数据结构是链表,查询慢,增删快
缺点: 线程不安全,效率高
Vector
优点: 底层数据结构是数组,查询快,增删慢
缺点: 线程安全,效率低
——Set 无序,唯一
HashSet
底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
答:依赖两个方法:hashCode()和equals()
LinkedHashSet
底层数据结构是链表和哈希表 (FIFO插入有序,且唯一)
原因如下两点:
答:1.由链表保证元素有序
2.由哈希表保证元素唯一
TreeSet
底层数据结构是红黑树。(唯一,且有序)
1. 如何保证元素排序的呢?
答:1.自然排序
2.比较器排序
2.如何保证元素唯一性的呢?
答:根据比较的返回值是否是0来决定
针对于Collection集合我们到底如何使用呢?(重点掌握)
唯一吗?
是:Set
排序吗?
是:TreeSet或LinkedHashSet
否:HashSet
如果你知道是Set,但是不知道是哪个Set,就用HashSet。
否:List
要安全吗?
是:Vector
否:ArrayList或者LinkedList
查询多:ArrayList
增删多:LinkedList
如果你知道是List,但是不知道是哪个List,就用ArrayList。如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。