Java集合框架(List)
【List集合中的具體常用對象】
Collection
|--List:元素是有序的,元素可以重複;因爲該集合體繫有索引
|--ArrayList:底層數據結構使用的是數組結構;查詢速度很快,但增
加和刪除稍慢;線程不同步;ArrayList初始化時,默
認長度爲10,當向其中添加的元素超過10時,ArrayList
會重新創建一個對象長度增加50%,然後把原來列表
中的元素和剛添加的元素一同添加到新的ArrayList中
|--LinkedList:底層數據結構使用的是鏈表結構;增加和刪除速度很
快,但查詢速度慢
|--Vector:底層使用的是數組結構;線程同步;Vector初始化時,默
認長度爲10,當向其中添加的元素超過10時,Vector
會重新創建一個對象長度增加100%,然後把原來存在
的元素和剛添加的元素一同添加到新的Vector中
+Vector中的枚舉
Vector中有elements()方法,返回的是枚舉Enumeration
枚舉是Vector特有的取出方式,其實枚舉和迭代器是一樣
的,但由於枚舉的名稱和其中的方法名稱過長,所以被迭代
器取代了。
LinkedList中的特有方法
添加:
addFirst(Ee):將指定元素插入到此列表的開頭
addLast(Ee):將指定元素添加到次列表的末尾
從JDK1.6版本開始:
offerFirst(Ee):將指定元素插入到此列表的開頭
offerLast(Ee):將指定元素插入到此列表的末尾
獲取:
getFirst():返回此列表中第一個元素,不刪除元素;若列表中沒有
元素,則會拋出NoSuchElementException異常
getLast():返回此列表中最後一個元素,不刪除元素;若列表
中沒有元素,則會拋出NoSuchElementException異常
removeFirst():返回此列表中的一個元素,但該元素會被刪除;若列
表中沒有元素,則會拋出NoSuchElementException異常
removeLast():返回此列表中最後一個元素,但不刪除元素;若列表
中沒有元素,則會拋出NoSuchElementException異常
從JDK1.6開始
peekFirst():返回此列表中第一個元素,不刪除元素;若列表中沒
有元素,則返回null
peekLast():返回此列表中最後一個元素,不刪除元素;若列表中沒
有元素,則返回null
pollFirst():返回此列表中第一個元素,但該元素會被刪除;若列
表中中沒有元素,則返回null
poolLast():返回此列表中最後一個元素,不刪除元素;若列表中沒
有元素,則返回null
【List中的共性方法】
集合框架中所有操作角標的方法,都是該體系特有的方法
由於List繼承自Collection,所以Collection中的共性方法,List中
都有,以下是List中的特有共性方法
增加:
-
add(int index,E element):在列表中的指定位置插入指定元素
-
addAll(int index,Collection<?extends E> c):在列表中的指定位置開始插入Collection中的所有元素
刪除:
-
remove(int index):移除列表中指定位置上的元素
修改:
-
set(int index,Eelement):用指定元素替換列表中指定位置上的元素
查找:
-
get(int index):返回列表中指定位置上的元素
-
subList(int fromIndex,int toIndex):返回列表中從fromIndex(包含)和toIndex(不包含)之間的部分視圖
-
listIterator():返回列表中列表迭代器
注意:List中判斷元素是否相同依據的是元素中的equals()方法
Listiterator:
List中特有的迭代器是Iteraotr的子接口
由於在迭代時不可以通過集合對象的方法操作集合中的元素,否則會發生
ConcurrentModificationException異常
所以在迭代時,只能用迭代器的方法操作元素,但Iterator中的方法是有
限的,只能對元素進行判斷,讀取和刪除。如果想要對元素進行其他操作
則需要其子接口ListIterator該接口,該接口只能通過List集合中的
listIterator()方法獲取。
ListIterator中的方法:
|- add(E e):將指定元素添加到列表
|- hasPrevious():逆向遍歷列表,判斷前一位是否有元素
|- previous():返回前列表中一個元素
|- nextIndex():返回下一個元素的索引
|- previousIndex():返回前一個元素的索引
|- set(E e):用指定元素替換next或previous返回的最後一個元素
例:
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
ListIterator li = al.listIterator();
while (li.hasNext()) {
if (li.next().equals("java02"))
li.add("java007");
}
System.out.println("al=" + al);
打印結果爲:al=[java01,java02,java007,java03]