1.Collection中的方法數組
Collection表示一組對象,他是集中、收集的意思。Collection接口有兩個子接口List和Set接口安全
Cooleantion中的方法:線程
1.boolean add(Object element):增長元素到容器指針
2.boolean remove(Object element):從容其中刪除元素對象
3.boolean contains(Object element):容器中是否包含該元素blog
4.int size():容器中元素的數量索引
5.boolean isEmpty():容器是否爲空接口
6.void clear():清空容器中全部元素element
7.Iterator iterator():得到迭代器,用於遍歷全部元素rem
8.boolean containsAll(Collection c):本容器是否包含C容器中的全部元素
9.boolean addAll(Collection c):將容器C中全部元素增長到本容器
10.boolean remove(Collection c):移除本容器和容器C中都包含的元素
11.boolean retainAll(Collection c):取本容器和容器C中都包含的元素,移除非交集元素
12.Object[] toArray() :轉化成Object數組
例(基本方法):
例(數學集合相關的方法):
2.List
List是有序、可重複的容器。
有序:List中的每一個元素都有索引標記。能夠根據元素的索引標記(在List中的位置)訪問元素,從而精確控制這些元素。
可重複:List容許加入重複的元素。更確切地講,List一般容許知足e1.equals(e2)的元素重複加入容器
List接口經常使用的實現類有3個:ArrayList、LinkedList和Vector。
List除了可使用Collection接口的方法,List多了一些跟順序(索引)相關的方法:
1.void add(int index,Object element):在指定位置插入元素,之前的元素所有後移
2.Object set(int index,Object element):修改指定位置的元素
3.Object get(int index):返回指定位置的元素
4.Object remove(int index):刪除指定位置的元素,後面元素所有前移一位
5.int indexOf(Object o):返回第一個匹配元素的索引,若是沒有該元素,返回-1
6.int lastIndexOf(Object o):返回最後一個匹配的元素的索引,若是沒有該元素,返回-1
例:
3.ArrayList的底層實現
ArrayList底層是用數組實現的存儲,特色:查詢效率高,增刪改效率低,線程不安全(Vevtor安全),比較經常使用。
數組長度有限,而ArrayList是能夠存聽任意數量的對象,長度不受限制,是怎麼實現的呢?
使用數組的擴容。當數組長度不夠了,默認定義一個原先的數組1/2大小的數組(10變成15)。再將原數組內容拷貝至新數組,無限循環。
4.LinkedList的底層實現
LinkedList底層是雙向鏈表實現存儲的。特色:查詢效率低,增刪改效率高,線程不安全。
雙向鏈表也叫雙鏈表,是鏈表的一種,他的每一個數據節點都有兩個指針,分別指向前一個節點和後一個節點。
因此,從雙向鏈表中的中的任意節點開始,均可以很方便的找到全部節點
5.Vector的底層實現
Vector的底層實現仍是數組,相關的方法都加入同步檢查,所以線程安全,效率低。
好比indexOf方法就加入了synchronized同步標記
public synchronized int indexOf (Object o,int index){
//略
}
6.如何選用ArrayList、LinkedList、Vector?
1.須要線程安全時,使用Vector。
2.不存在線程安全時,並在查找時多用ArrayList(經常使用)
3.不存在線程安全時,增長和刪除元素多用LinkedList。