【JAVA SE基礎篇】41.Collection、List方法和ArrayList、LinkedList、Vector底層實現

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。

相關文章
相關標籤/搜索