JAVA中ArrayList、LinkedList、Vector、Stack的比较( 二 )

清空预删除节点:
e.next = e.previous = null;e.element = null;交给gc完成资源回收,删除操作结束 。
与ArrayList比较而言,LinkedList的删除动作不需要“移动”很多数据,从而效率更高 。
ArrayList

JAVA中ArrayList、LinkedList、Vector、Stack的比较

文章插图
 
恩,又是调用了System.arraycopy 。
六、结论操作ArrayListLinkedListVectorStack读取O(1)O(n)O(1)O(1)插入O(n)O(1)O(n)O(n)删除O(n)O(1)O(n)O(n)
  • ArrayList(实现动态数组),查询快(随意访问或顺序访问),增删慢 。整体清空快,线程不同步(非线程安全) 。数组长度是可变的百分之五十延长
  • LinkedList(实现链表),查询慢,增删快 。
  • Vector(实现动态数组),都慢,被ArrayList替代 。长度任意延长 。线程安全(同步的类,函数都是synchronized)
  • Stack(实现堆栈)继承于Vector,先进后出 。
所以,快速访问ArrayList,快速增删LinkedList,单线程都可以用,多线程只能用同步类Vector




推荐阅读