Arraylist 与 LinkedList 区别
Arraylist底层使用的是数组(存读数据效率高,插入删除特定位置效率低)。 LinkedList底层使用的是双向循环链表数据结构(插入,删除效率特别高)。 学过数据结构这门课后我们就知道采用链表存储,插入,删除元素时间复杂度不受元素位置的影响,都是近似O(1)而数组为近似O(n),因此当数据特别多,而且经常需要插入删除元素时建议选用LinkedList.一般程序只用Arraylist就够用了,因为一般数据量都不会蛮大,Arraylist是使用最多的集合类。
ArrayList 与 Vector 区别
1、Vector类的所有方法都是同步的。可以由两个线程安全地访问一个Vector对象、但是一个线程访问Vector ,代码要在同步操作上耗费大量的时间。Arraylist不是同步的,所以在不需要同步时建议使用Arraylist。
2、二者在扩容方面有些许差别: ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,Arraylist扩大到原来的1.5倍,Vector扩大到2倍。
3、 Vetor默认立即初始化操作,ArrayList默认采用的是延迟初始化数组的方式。