首先上图说话,通过图片最直观的了解集合体系
简略版 (其中虚线为接口,实线为接口实线类)

详细版 (其中虚线为接口,实线为接口实线类)
常见集合的特点
Collection:无序,不唯一
直接接口List 有序,不唯一,允许有Null值
List接口直接实现类: vector(已淘汰)
底层实现是数组,有序,不唯一,允许有null值,既然是数组,那就是查询修改快,增删慢,线程同步,安全;
ArrayList
底层实现是数组,有序,不唯一,允许有null值,同样具有数组的特点,查询修改快,增加删除慢,线程异步,不安全;
LinkedList
底层实现是链表,有序,不唯一,允许有null值,既然是链表,那就是增删快,查改慢,线程异步,不安全;
直接接口set 无序,唯一,最多允许一个NULL值;
set接口直接实现类 hashset
底层实现为hashmap(下面会提到),无序,唯一,最多允许一个NULL值,操作数据块,线程同步,不安全;
因为其中元素唯一,有序所以元素需要重写hashcode()方法与equals()方法
hashset直接子类 LinkedHashSet
底层实现为LinkedHashMap 有序,唯一,最多允许一个NULL值,操作数据块,线程同步,安全;
treeset
底层实现为TreeMap,注意这里是有序,唯一,不允许有NULL值,操作数据快,线程异步,不安全,集合中元素需要实现比较器
Map 从上图可以看出 Map和Collection都是继承了 Iterable接口
Key-value键值对,无序,key唯一,最多允许有一个null值,value不唯一,允许有null值
直接实现类hashtable(已淘汰),注意这里是实现类
底层为散列表即 哈希表,无序,不允许有NULL值,操作数据快,线程同步,安全,(注意这里是线程同步)key需重写
hashcode()跟equals()是方法
直接实现类hashmap
底层也是哈希表,无序,key唯一,最多允许一个空值,values不唯一,允许有NULL值,操作数据快,
线程异步,不安全,key值需要重写hashcode()方法和equals()方法
hashmap直接子类linkedhahsmap
底层为链表,有序(注意这里是有序)key唯一,最多允许一个NULL值
value不唯一,允许有NULL值,操作数据快,线程异步,不安全;
Map直接实现子类treemap
底层为红黑树,有序,唯一,key唯一,不允许有NULL值,value不唯一,允许有NULL值
操作数据快,线程异步,不安全。key需实现比较器