ArrayList的基本工作原理详解remove
来源:互联网 发布:商业计划书的优化答案 编辑:程序博客网 时间:2024/06/15 19:22
其实remove(index),add(index,e)类似去操作下标增加或者删除的。其实用ArrayList挺费劲的。
下面就看看费劲在哪。
拿remove来说
public E remove(int index) { //第一步先判断是否有越界,如果越界直接IndexOutOfBoundsException rangeCheck(index); modCount++; //把该元素从数组中提出 E oldValue = elementData(index); //需要复制的长度 int numMoved = size - index - 1; if (numMoved > 0) //原数组,从哪开始复制,目标数组,复制起始位置,长度。过程如下图: System.arraycopy(elementData, index+1, elementData, index, numMoved); //赋值null等待回收 elementData[--size] = null; return oldValue; }
比如删除下标3的元素
原数组:elementData
从哪开始复制:index+1 = 4
目标数组:elementData
复制起始位置:index =3
长度: size - index - 1=6
所以使用Array按照下标去实现删除效率很低
阅读全文
0 0
- ArrayList的基本工作原理详解remove
- ArrayList的基本工作原理详解add
- Java arrayList工作原理详解及并发
- 详解ArrayList的remove的方法
- struts1的工作原理及基本配置详解
- ArrayList和LinkedList的工作原理
- ArrayList删除元素(remove())报错的原理与解决办法
- 关于ArrayList的remove
- ArrayList的remove()方法
- CPU的基本工作原理
- mdev的基本工作原理
- mdev的基本工作原理
- calc 的基本工作原理
- mdev的基本工作原理
- mdev的基本工作原理
- mdev的基本工作原理 .
- GDB的基本工作原理
- git 的基本工作原理
- OpenCv常用函数
- 电阻器在电路中作用
- PHP函数-字符长度与截取
- 解决火狐https问题 安全连接问题
- javascript类型判断
- ArrayList的基本工作原理详解remove
- 浏览器内核的解析和对比
- 树学习(3)
- PCL体素滤波器加双窗口显示滤波前后结果
- Example13_6
- opencv 配置文件
- [Unity踩坑系列]带SD卡的安卓手机,安装apk失败的问题
- js获取页面url中的各项值
- RxJava2详解(一)--基础