圖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*/
}