欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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
 

由代码结果可分析:

 

相关标签: java底层