ArrayList实现和LinkedList实现

ArrayList是利用动态数组实现。由于是动态数组,在add或者remove的时候,会需要将数组的i+1到size()的所有元素往后移一位,要是遇到了数组长度不够的情况下还会创建一个新数组是旧数组的长度的两倍,耗费的代价是巨大的,但是在操作get和set的时候时间复杂度是O(1)。

而LinkedList是通过双向链表去实现,在java中并没有指针,于是使用了node的对象,储存date和下一个的node对象和上一个的node对象。在进行add或者remove操作时,通过对指定元素的上一个节点和下一个节点的指向就能简单的实现,但是在这之前需要找出对应的节点,需要进行一次O(N/2)代价的操作。



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.线性表 定义:零个或者多个元素的有限序列。也就是说它得满足以下几个条件:  ①该序列的数据元素是有限的。  ②...
    Geeks_Liu阅读 2,728评论 1 12
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,306评论 0 16
  • 彩云之南-七彩梯田!今天就给大家所分享下如此美景! 云南“七彩梯田”你会被深深所陶醉! 云南红河州的元阳县 云南元...
    航旅梦之行阅读 512评论 0 0
  • 【03/28/2017 周二 第208天 丁酉年 三月初一日】 ✔静√智√勇√仁√强√礼 小结。 √上午我和姐姐早...
    妈妈熊阅读 169评论 0 1
  • 叶子的离开,是风的追求还是树的不挽留? 树和叶子本来是幸福的生活在一起的,这里是一个美丽的花园,充满各种花草树木。...
    胡子长阅读 169评论 0 1