ArrayList、LinkedList、CopyOnWriterArrayList这三者有什么区别?

ArrayList、LinkedList、CopyOnWriterArrayList这三者有什么区别?

  1. 首选ArrayList是个数组,所以可以通过下标查询,查询速度快。在使用add()添加元素的时候,正常情况下是在数组末尾添加,如果需要扩容那么这个添加操作就会变得很长,如果是通过下标的方式插入元素,难么即使是在不扩容的情况下也会变得耗费时间,因为这个下标的右边元素都要往右边移动一位。同时该集合是个线程不安全基本,不适合多线程。
  2. LinkedList实现了Deque接口,数据结构是链表,因此也拥有的链表的增删快的优点,同时也有链表查询需要遍历的缺点。同时也是线程不安全的集合,不适合多线程场景。
  3. CopyOnWritedArrayList 其数据结构是数组,大致上跟ArrayList差不多,和ArrayList不同的是,这个集合是线程安全的,这个集合在添加元素的时候会加锁,并且创建出一个新的数组,添加操作在新的数组上进行,但是读取操作在原来数组上进行,所以这个集合适合读多写少并且对数据实时性要求不高的场景。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值