List子类的区别
(ArrayList,Vector)
不同点:
1.ArrayList是线程不安全的,在单线程场景里效率更高。Vector是线程安全的,适用于多线程,在单线程场景不如ArrayList。
2.当空间不足时,ArrayList会以旧空间的50%来扩增;Vector会根据容量增量(默认值为0)来扩增,如果增量为0,则按旧空间的大小来扩增(变为原来的两倍),而这个增量在ArrayList中没有。
相关:容量增量(capacityIncrement,Vector)
相关代码:newCapacity = oldCapacity + ((capacityIncrement > 0) ?
capacityIncrement : oldCapacity);
相同点:都是线性结构,都可以添加null元素
LinkedList是链表式的结构,是线程不安全的,如果想把其变为线程安全的可以使用Collections.synchronizedList(new LinkedList())。
LinkedList在(随机位置)删除和插入上速度比ArrayList上快
总结:在非多线程场景中使用ArrayList是最好的,即使是多线程场景也可以用Collections.synchronizedList(new ArrayList())来封装