ArrayList的remove方法的一个特性
来源:互联网 发布:制作生日快乐的软件 编辑:程序博客网 时间:2024/06/04 19:56
记录昨天在群里面学到的ArrayList的remove方法的特性,测试代码如下:
public class ListRemove{ public static void main(String[] args) { List<Object> list = new ArrayList<Object>(); Student student = new Student(); Teacher teacher = new Teacher(); list.add(teacher); list.remove(teacher); System.out.println("remove(teacher)后list.size() = " + list.size()); list.remove(student); System.out.println("remove(student)后list.size() = " + list.size()); }}class Student{ @Override public boolean equals(Object obj) { return true; }}class Teacher{ @Override public boolean equals(Object obj) { return false; }}
方法最终的打印结果为:
remove(teacher)后list.size() = 1remove(student)后list.size() = 0
结果分析(附录有ArrayList的remove方法源码):
1.当list调用remove方法remove(teacher)时,首先会调用teacher类中的equal方法判断两个对象是不是同一个对象,但由于teacher类中直接就返回了false,及teacher.equal(teacher) = false;则list中没有元素可以删除,故list.size()仍为1;
2.同理,当list调用remove方法remove(student)时,比较为true,即student.equals(teacher)=true,因此不管list中存放的是什么类型的数据,list都会remove成功。
3.在源码 中传入参数为student时o.equals(elementData[index])一直为true,删除成功。
附ArrayList.remove()方法的源码:
public boolean remove(Object o) { if (o == null) { for (int index = 0; index < size; index++) if (elementData[index] == null) { fastRemove(index); return true; } } else { for (int index = 0; index < size; index++) if (o.equals(elementData[index])) { fastRemove(index); return true; } } return false; }
0 0
- ArrayList的remove方法的一个特性
- ArrayList的remove()方法
- 细说ArrayList的remove方法
- ArrayList、Iterator的remove方法
- ArrayList.remove()的一个小细节
- 详解ArrayList的remove的方法
- 关于arraylist 的remove 与contain 方法
- ArrayList的add和remove方法
- 今天遇到的对List,ArrayList的remove方法的一个小问题
- 关于ArrayList的remove
- java中ArrayList的remove方法删除一个数据时问题简述
- collection的remove方法对HashSet ArrayList的不同
- (日常打卡)自定义的一个模仿ArrayList的类, 你需要实现其中的add, get, remove , 等方法
- ArrayList的remove()的问题
- ArrayList中的remove方法是如何实现的
- ArrayList<Integer> 中remove 方法调用的区分
- ArrayList和LinkedList add和remove方法的比较
- ArrayList在执行remove方法时遇到的问题
- HDOJ 题目2614 Beat(DFS)
- Java中如何让web服务器启动的时候自动运行web程序中某个类的某个方法
- 虚拟机安装Mac和连接网络
- javaweb 文件上传和下载
- Chrome自带移动设备模拟器,适合移动端网页开发
- ArrayList的remove方法的一个特性
- 34、滑动界面 style、GestureDetector、overridePendingTransition()、anim、按钮图片变更(button_select)
- cocos2dx之lua项目开发中MVC框架的简单应用
- swift switch的几点用法
- 【导航】请戳我!
- 什么是 Web 框架?
- handler与异步任务
- private、默认、protected、public
- 创建一个自定义的Annotation