ArrayList中的remove方法
程序员文章站
2022-05-12 11:27:32
...
ArrayList集合底层存储结构是数组,所以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; }
遍历中比较使用的是equals方法, String类型比较的是内容是否相同,基本数据类型包装类则看的是地址
ArrayList<String> names= new ArrayList<String>(); names.add("Tom"); names.add("Tin"); names.remove(null); names.remove("Tom"); System.out.println(names.size());
ArrayList<Integer> nums = new ArrayList<Integer>(); nums.add(1); nums.add(2); System.out.println(nums.size()); nums.remove(1); System.out.println(nums.size());
remove(int index) 移除列表中指定位置的元素,并返回被删元素
remove(Object o) 移除集合中第一次出现的指定元素,移除成功返回true,否则返回false。
将Object里的equals方法进行重写
public class Person { private String id; public Person(String id) { this.id=id; } @Override public boolean equals(Object obj) { System.out.println(this); System.out.println("------------"+obj); return super.equals(obj); } }
ArrayList<Person>list = new ArrayList<Person>(); Person person = new Person(); list.add(new Person()); list.add(new Person()); list.remove(new Person()); System.out.println(list.remove(new Person())); System.out.println(list.add(new Person())); System.out.println(list.size());
显示结果:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
false
2
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
false
由代码结果可分析:
上一篇: 类的加载和初始化
下一篇: HashTable四种遍历方式