ArrayList,Vector,LinkedList的區別


圖3來源Tsy遠

1.LinkedList類:增刪快,查詢慢。

LinkedList實現了List接口,允許null元素。

此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。

LinkedList不是同步的(不是線程安全)。

實現線程安全:List list = Collections.synchronizedList(newLinkedList(...));

2.ArrayList類:增刪慢,查詢快。

ArrayList實現了可變大小的數組。它允許null。

ArrayList沒有同步。

3.Vector類:Vector線程安全,效率低。

代碼實現向一個List的容器裏放入String對象,並且不報錯。

public static void main(String[] args) throws Exception {
//聲明Integer的泛型ArrayList對象,並放入Integer實例
ArrayList intList = new ArrayList<>();
intList.add(new Integer(5)); 
intList.add(7); 
//定義需要被加入list對象的字符串
String str = "abc"; 
//通過反射獲取list對象運行時的add方法,此時該方法已經被擦除泛型
Method m = intList.getClass().getMethod("add", java.lang.Object.class); 
//調用泛型方法加入String對象
m.invoke(intList, str); 
//打印結果:[5, 7, abc]
System.out.println(intList); 
for(Object obj:intList) 
System.out.println(obj.getClass());
/*打印結果: 
class java.lang.Integer 
class java.lang.Integer 
class java.lang.String*/ 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章