边学边记——Java数据结构☞ArrayList(顺序表)和LinkedList(链表)的对比总结

目录

一.方法的时间复杂度对比

二.不同点 

三.总结


如想了解有关 ArrayList(顺序表)和LinkedList(链表)的知识,请查阅:

ArrayList(顺序表)的介绍及自我实现

LinkedList(链表)的介绍及自我实现

一.方法的时间复杂度对比

ArrayListLinkedList
int size()O(1)O(1)
boolean add(Long e)O(1)O(1)
void add(Long e,int index)O(n)O(n)
Long get(int index)O(1)O(n)
Long set(int index,Long e)O(1)O(n)
Long remove(int index)O(n)O(n)
boolean remove(Long e)O(n)O(n)
int indexOf(Long e)O(n)O(n)
int lastIndexOf(Long e)O(n)O(n)
boolean comtains(Long e)O(n)O(n)
void clear()O(1)O(1)
boolean isEmpty()O(1)O(1)

二.不同点 

不同点ArrayListLinkedList
存储空间上物理上一定连续逻辑上连续,但物理上不一定连续
随机访问

支持O(1)

ArrayList实现了RandomAccess接口

不支持:O(N)
头插需要搬移元素,效率低O(N)只需修改引用的指向,时间复杂度为O(1)
插入空间不够时需要扩容没有容量的概念
应用场景元素高效存储+频繁访问任意位置插入和删除频繁

三.总结

  • 在需要使用List时,一般使用ArrayList。
  • 当使用栈/队列的结构时,可以考虑使用LinkedList。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值