Collection: List和Set继承自Collection接口。java
|--List:
|--ArrayList
|--Vector
|--LinkedList数组
|--Set:
|--HashSet
|--TreeSet安全
|--LinkedHashSet数据结构
|--Queue: 队列集合,有PriorityQueue类spa
List:有序且容许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。线程
Set:不容许元素重复。HashSet和TreeSet是两个主要的实现类。排序
Map:也属于集合系统,前两个继承至collection接口,Map为独立接口。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,可是value能够重复。HashMap、Hashtable,TreeMap,LinkedHashMap前三个主要的实现类。继承
Collection的功能概述:接口
A:添加功能:boolean add(E e)确保此 collection 包含指定的元素(可选操做)。
B:删除功能:boolean remove(Object o)今后 collection 中移除指定元素的单个实例,若是存在的话(可选操做)。
C:判断功能:
boolean isEmpty()若是此 collection 不包含元素,则返回 true。
boolean contains(Object o)若是此 collection 包含指定的元素,则返回 true
D:获取功能:Iterator<E> iterator()返回在此 collection 的元素上进行迭代的迭代器。
E:长度功能:int size()返回此 collection 中的元素数。
F:交集(了解):boolean retainAll(Collection<?> c)仅保留此 collection 中那些也包含在指定 collection 的元素(可选操做)。
G:把集合转数组(了解):Object[] toArray()返回包含此 collection 中全部元素的数组。队列
— List 有序,可重复
ArrayList
优势: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高
Vector
优势: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低
LinkedList
优势: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
—Set 无序,惟一
HashSet
底层数据结构是哈希表。(无序,惟一)
如何来保证元素惟一性?
1.依赖两个方法:hashCode()和equals()
LinkedHashSet
底层数据结构是链表和哈希表。(FIFO插入有序,惟一)
1.由链表保证元素有序
2.由哈希表保证元素惟一
TreeSet底层数据结构是红黑树。(惟一,有序)1. 如何保证元素排序的呢?天然排序比较器排序2.如何保证元素惟一性的呢?根据比较的返回值是不是0来决定