ArrayList和LinkedList区别

1.保证线程安全:

  • ArrayList和LinkedList都是不同步的,也就是都不保证线程安全。

2.底层数据结构:

  • ArrayList底层OBJECT数组,LinkedList底层数据结构是双向链表

3.插入和删除是否受到元素位置影响:

  • ArrayList是数组所以插入一般都是add在队尾,如果要在指定位置i插入和删除元素的话,时间复杂度为O(n-i),因为在进行上述操作时,集合第i个和第i个元素之后的(n-i)个元素都需要执行向后或者向前移一位。 

  • LinkedList是双向链表,对于它的插入和删除元素是不受元素位置的影响,因为它是由其中的next指针指向下一个元素的地址,所以要进行插入删除操作只需改变对应的next指针指向即可。

4.是否支持快速随机访问:

  • LinkedList不支持高效的随机元素访问,因为它的底层是基于链表的数据结构,寻找某一个的元素,只能找到其对应的上一个元素的地址,所以不支持随机访问。

  • ArrayList支持。对应于get(int index)方法。

5.内存空间占用:

  • LinkedList内存花费体现在它的每一个元素都需要比 ArrayList更多的空间,因为存放直接后继和直接前驱以及数据。

  • ArrayList空间浪费体现在list列表的结尾会预留一定的容量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值