1.Vector類
Vector類是從jdk1.0開始出現的,從 Java 2 平台 v1.2 開始,此類改進為可以實現List接口,使它成為集合框架中的一員。
Vector v = new Vector();
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en = v.elements();
while(en.hasMoreElements())
{
System.out.println(en.nextElement());
}
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en = v.elements();
while(en.hasMoreElements())
{
System.out.println(en.nextElement());
}
其中Enumeration是Vector取出元素的特有方式。后來因為名稱以及方法的名稱都過長,被迭代器取代了。Vertor底層是基於數組實現的,且其是同步的。但是添加到一定量的元素后,再添加元素其長度會100%擴容(原來的長度10變成20),而ArrayList底層也是基於數組實現的,但其只會小幅擴容(原數組長度*3 除2再加1,更節約空間)。Vector被ArrayList取代。
2.ArrayList
內部是數組數據結構,是不同步的。替代了Vector。查詢的速度快
3.LinkedList
內部是鏈表數據結構,是不同步的。增刪元素的速度很快。(鏈表數據結構)
特有方法:
addFirst();
addLast():
=========jdk1.6==========
offerFirst();
offetLast();
getFirst();.//獲取但不移除,如果鏈表為空,拋出NoSuchElementException.
getLast();
=========jdk1.6==========
peekFirst();//獲取但不移除,如果鏈表為空,返回null.
peekLast():
removeFirst();//獲取並移除,如果鏈表為空,拋出NoSuchElementException.
removeLast();
=========jdk1.6==========
pollFirst();//獲取並移除,如果鏈表為空,返回null.
pollLast();
addLast():
=========jdk1.6==========
offerFirst();
offetLast();
getFirst();.//獲取但不移除,如果鏈表為空,拋出NoSuchElementException.
getLast();
=========jdk1.6==========
peekFirst();//獲取但不移除,如果鏈表為空,返回null.
peekLast():
removeFirst();//獲取並移除,如果鏈表為空,拋出NoSuchElementException.
removeLast();
=========jdk1.6==========
pollFirst();//獲取並移除,如果鏈表為空,返回null.
pollLast();
總結:
List:
|--Vector:內部是數組數據結構,是同步的。增刪,查詢都很慢!
|--ArrayList:內部是數組數據結構,是不同步的。替代了Vector。查詢的速度快。
|--LinkedList:內部是鏈表數據結構,是不同步的。增刪元素的速度很快。
|--Vector:內部是數組數據結構,是同步的。增刪,查詢都很慢!
|--ArrayList:內部是數組數據結構,是不同步的。替代了Vector。查詢的速度快。
|--LinkedList:內部是鏈表數據結構,是不同步的。增刪元素的速度很快。