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來決定