美文网首页工作生活
ArrayList和LinkedList底层

ArrayList和LinkedList底层

作者: 80a7ba2dd31d | 来源:发表于2019-07-02 20:56 被阅读0次

ArrayList底层实现是数组object,而LinkedList底层实现是双向链表(JDK1.7开始)。

故ArrayList具有随机访问的特性,实现了RandomAccess接口,查找的效率高。缺点就是插入和删除元素效率低,若是插入末端时间复杂度为O(1),若插入在数组中间i位置(1<i<n),则后续元素需要移动(n-i)次,时间复杂度为O(n)。由于数组连续存储,内存空间占用小,但是ArrayList需要在尾部留一部分空间。

而LinkedList底层实现为双向链表,双向链表单节点结构为指向前驱节点的指针、Data、指向后驱节点的指针,故内存空间占用比数组大。链表具有插入、删除方便的特征,只需将指针断开重定向即可,时间复杂度近乎为O(1)。但是查找方面由于是双向链表平均查找时间都为(n/2),故时间复杂度为O(n)。

相关文章

网友评论

    本文标题:ArrayList和LinkedList底层

    本文链接:https://www.haomeiwen.com/subject/onfxhctx.html