zoukankan      html  css  js  c++  java
  • java 集合之ArrayList、Vector、LinkedList、CopyOnWriteArrayList

    ArrayList

    线程不安全。

    底层Object[]数组实现,用transient关键字修饰,防止序列化,然后重写了readObject和writeObject方法,为了提高传输效率。

    插入时会判断数组容量是否足够,不够的话进行扩容。

    通过将旧数组复制到新建数组进行扩容。

    移除元素的时候,会将index+1之后的所有元素前移。

    Vector

    线程安全。

    其余类似ArrayList

    LinkedList 

    LinkedList是基于链表结构实现的。双向链表。

    查询慢,新增删除快。

    CopyOnWriteArrayList

    底层是用volatile transient声明的数组。保证修改之后读立即可见。

    内部持有ReentrantLock锁。增删改都会加锁。锁只有一把。保证增删改只有一个线程在进行。

    读操作不需要获得锁,支持并发读。

    增删改中会复制一个新数组,操作完成之后再赋给原来的引用。保证增删改的过程中不影响并发读。

  • 相关阅读:
    22 有序化模块
    21模块
    Day20 继承
    Day19 约束
    面向对象 成员
    面向对象01
    内置函数、匿名函数、递归、二分法
    生成器函数 推导式
    Unity3D 实现方块跑酷
    day30-2018-12-3-进程
  • 原文地址:https://www.cnblogs.com/natian-ws/p/10763925.html
Copyright © 2011-2022 走看看