【Android】ArrayList通过remove方法删除元素对象源码分析
来源:互联网 发布:软件开发相关书籍 编辑:程序博客网 时间:2024/05/16 05:05
ArrayList删除元素对象的方法源码如下:
@Override public boolean remove(Object object) { Object[] a = array; int s = size; if (object != null) { for (int i = 0; i < s; i++) { if (object.equals(a[i])) { System.arraycopy(a, i + 1, a, i, --s - i); a[s] = null; // Prevent memory leak size = s; modCount++; return true; } } } else { for (int i = 0; i < s; i++) { if (a[i] == null) { System.arraycopy(a, i + 1, a, i, --s - i); a[s] = null; // Prevent memory leak size = s; modCount++; return true; } } } return false; }
可以看到, 删除元素对象的实际过程为:
如果传入的元素不为null, 则遍历列表中的元素, 如果元素的值与参数中对象相等, 则通过arrayCopy方法重构数组a, 即将数组从该元素开始往后的元素全部前移, 达到删除的目的, 同时设置新的列表size。
如果传入的元素为null, 则通过遍历, 用前面类似的办法, 删除掉第一个null元素。
可以得出结论, 调用remove方法, 会, 且只会 删除第一个与传入对象通过equals方法判断相等的元素。如果传入null, 则删除掉第一个null元素。
所以, 如果自定义类想要使用remove方法从列表删除某个指定值对象, 还请先实现该类型自己的equals方法。
0 1
- 【Android】ArrayList通过remove方法删除元素对象源码分析
- 关于List,ArrayList中remove(object obj)方法不能删除对象问题
- for循环删除(ArrayList.remove)及改进方法及对象在内存中的理解
- 关于List,ArrayList中remove(object obj)方法不能删除对象问题
- for循环删除(ArrayList.remove)及改进方法及对象在内存中的理解
- ArrayList删除元素(remove())报错的原理与解决办法
- Java----- ArrayList构造、add、remove、clear方法实现原理源码分析
- Iterator对象的remove方法是迭代过程中删除元素的唯一方法
- Iterator对象的remove方法是迭代过程中删除元素的唯一方法
- Iterator对象的remove方法是迭代过程中删除元素的唯一方法
- ArrayList中remove()方法删除长度大于5的元素之后下标重定位的问题
- 遍历ArrayList对象remove掉不需要的元素
- 使用Iterator的remove方法删除元素
- jQuery删除元素方法remove(),detach(),empty()
- jQuery删除元素方法remove(),detach(),empty()
- Java ArrayList删除特定元素的方法
- 【Java源码分析】为什么不可以在指定默认容量的ArrayList对象中插入元素
- 删除vector容器中的对象元素的三种方法:pop_back, erase与remove算法
- IOS基础UI之(十) UIPickerView和UIDatePicker详解
- python的str,unicode对象的encode和decode方法
- Java并发的四种风味:Thread、Executor、ForkJoin和Actor
- 映射文件xxx.hbm.xml下的各元素结构
- org.hibernate.id.IdentifierGenerationException
- 【Android】ArrayList通过remove方法删除元素对象源码分析
- ALM各模块的关联
- struts2 The Struts dispatcher cannot be found异常解决办法
- Linux命令——uname
- 愚人节的礼物
- HDOJ 2122 Ice_cream’s world III【Prime】&【Kruskal】
- LightOJ 1248 Dice (III)
- 实现扫描二维码和生成带logo的二维码
- Java 设计模式 概要