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

    一、数据结构

    ArrayList:动态数组

    LinkedList:双向链表

    二、不同点

    ArrayList:

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

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

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

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

    LinkedList:

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

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

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

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

    三、优先使用

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

  • 相关阅读:
    linux内存和swap
    Linux awk sort
    redis aof和rdb区别
    STL中的map、unordered_map、hash_map
    mysql 冷热备份
    redis
    linux 几个命令
    linux erase
    group by
    现在很多技术知识点缺乏来龙去脉的介绍
  • 原文地址:https://www.cnblogs.com/mcjhcnblogs/p/14258354.html
Copyright © 2011-2022 走看看