ArrayList 与 LinkedList 区别

ArrayList 与 LinkedList 区别

共同点
• 都是 AbstractList 的子类
• 都实现了 Cloneable 跟 Serializable 接口 代表 可以使用克隆以及序列化
• 都保证了数据的顺序读写
• 都可以存Null值 / 重复的数据
• 都是通过索引获取元素
• 都是线程不安全的集合 都可以通过 Collections.synchronizedList(List?) 创建一个线程安全的集合
不同点
• ArrayList
• 实现了 RandomAccess 接口 提供了快速定位资源位置的功能 (其实也就是 使用for循环效率高 )
• size() | isEmpty() | get() | set() | iterator() | 时间复杂度为O (1)
• add 添加操作时间复杂度平均为 O(n)
• 占用空间小 不需要额外空间维护链表结构
• 适合 根据索引查询多的场景
• LinkedList
• 实现了Queue | Deque 接口 可以当做双向队列,栈来使用
• 头尾添加数据时间复杂度为 O(1) 其他位置插入复杂度为O(n)
• 获取头尾数据时间复杂度为O(1) 其他位置最差时间复杂度为O(n)
• 删除数据时间复杂度为O(1)
• 需要额外空间维护链表结构 以保证顺序读写的正确性
• 适合做 删除操作多的场景

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值