zoukankan      html  css  js  c++  java
  • ArrayList和LinkedList的区别以及内部数据结构

    一、数据结构

    ArrayList:动态数组

    LinkedList:双向链表

    二、不同点

    ArrayList:

    查询:基于数组,直接通过索引,就可以获取到位置的值。

    添加:尾部添加和LinkedList类似,效率差不多,但是可能会扩容,基于数组的复制,开销较大,中间插入的话,涉及到数组的后移,使性能降低。

    删除:涉及到数组的前移,使性能降低。

    修改:通过索引获取到,可以直接修改。

    LinkedList:

    查询:基于链表,首先需要判断,索引和数组长度的一半比较,如果小,就从头向尾部遍历,反之,然后进行匹配。

    添加:尾部添加和ArrayList类似,效率差不多,如果中间插入,只需要移动Node的pre和next指针,简单高效。

    删除:和添加类似,直接移动指针集合。

    修改:也是先走查询的步骤,找到后,再进行修改。

    三、优先使用

    了解了上述知识之后,就知道,查询和修改多的话使用Array List,如果修改和删除多的话,就使用LinkedList。

  • 相关阅读:
    【sqlserver】sqlserver表中导入大批量数据
    java中json结果检查
    spoj375Query on a tree树链剖分
    Hdu4737 ( A Bit Fun ) 线段树
    CodeForces 274E. Riding in a LiftDp
    D. Red-Green Towers Dp
    Hdu5067旅行商
    Hdu5068线段树
    uva11992线段树
    uva1400线段树
  • 原文地址:https://www.cnblogs.com/mcjhcnblogs/p/14258354.html
Copyright © 2011-2022 走看看