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