单列集合:
Collection 单列集合的根接口(包含List接口和Set接口)
List系列:有序,不唯一
1,ArrayList 底层使用Object数组,查询快,插入删除慢。
2,LinkedList 底层使用链表数据结构,查询慢,插入删除快,有removeLast()方法,而ArrayList中没有。
3,Vector底层也采用Object数组,但是是线程安全的,操作效率低。
Set系列:无序,唯一
1,HashSet 底层采用哈希表,存取速度快。
存储原理:当一个元素添加进hashSet时,会先调用该对象的hashCode方法得到哈希码值,将哈希码值通过计算得到该对象的存储位置,如果这个位置没有元素,那么该对象会被存储;如果有元素会调用该对象的equals方法来进行判断,当返回true时,则该对象不会被存储,所以存入hashSet中的对象一般会重写hashCode和equals方法。
2,TreeSet 底层采用红黑树,对存储进该集合中的元素进行排序存储。
TreeSet添加元素:如果添加的元素有自然顺序,那么TreeSet会按元素的自然顺序进行排序存储。
如果添加的元素没有自然顺序,那么添加的对象排序时需要一个比较器。
内部比较器:定义在自定义类的内部,实现Comparable接口
外部比较器:定义在自定义类的外部的自定义比较器类,实现Comparator接口,在创建TreeSet对象时传入一个自定义比较器类对象
双列集合:
Map 双列集合的根接口, 存储key-value键值对,键不可重复,值可重复
1,HashMap:底层也是哈希表。
2,TreeMap:底层采用红黑树。
3,HashTable:线程安全,底层采用哈希表,HashMap是其轻量级实现但是线程不安全。