Copy On Write容器:写时复制容器(读写分离容器);
1 底层原理:
看完源码后,得出的底层原理如下:
- 对容器进行一个赋值操作;
- 老容器中的值全部拷贝到新容器当中;
- 新容器长度+1;
- add的新元素添加到新容器的最后一个位置;
- 将老容器的地址指向新的容器;
2 源码分析:
2.1 基本用法
2.2 构造函数
CopyOnWriteArrayList内部有一个Object[] array,空构造器就是给这个array赋值为一个长度为0的Object类型的数组;
2.3 add方法
add方法就是将要添加元素的数组拷贝一份出来,并且在原有长度的基础上+1后,创建一个新的数组,然后在新的数组最后位置上添加上要添加的元素,最后将新数组指向底层的array;
2.4 addIfAbsent(E e)方法
addIfAbsent方法,判断数组中有没有已经相同值的元素,如果有就会添加失败
2.5 indexOf()方法
indexOf(Object o, Object[] elements, int index, int fence)的作用就是,遍历整个数组,
当找到相同元素时,返回响应元素下标;
没找到时,返回-1;
2.6 addIfAbsent(E e, Object[] snapshot)方法
addIfAbsent的主要作用是判断要添加进去的元素,是不是已经存在了,如果存在则不添加了
2.7 eq(Object o1, Object o2)方法
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END