实例一
大家先看看下段代码,请问大家,删除操作之后的结果是什么?
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("4");
list.add("3");
list.add("2");
list.add("1");
System.out.println("删除操作之前:" + list);
list.remove("1");
System.out.println("删除操作之后:" + list);
}
}
运行结果:
不就是很简单嘛,是不是大家一看代码就知道结果了,根本不用运行代码看输出日志。
实例二
我们继续看下段代码,同样请问大家,删除操作之后的结果是什么?
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(4);
list.add(3);
list.add(2);
list.add(1);
System.out.println("删除操作之前:" + list);
list.remove(1);
System.out.println("删除操作之后:" + list);
}
}
如果觉得和第一个实例输出是一样[4, 3, 2]的小伙伴们,在我的留言里打一个1。
运行结果:
这里出现反转了,输出结果是 [4, 2, 1],元素【1】没有被删除,相信大部分学习Java的童鞋早就看出来原因了,这里为了新手朋友们继续解疑。我们打开ArrayList的源码,可以看到两个remove的函数:
remove(int index)是按ArrayList的索引去删除,remove(Object o)是按ArrayList的指定元素去删除。所以上面代码中list.remove(1);是删ArrayList中的第二个元素(ArrayList的索引是从0开始,索引1指向的是第二个元素),最后我们看到的输出结果是第二个元素【3】被删除了。
实例三
既然list.remove(1);是按ArrayList的索引去删除,那有的小伙伴会说,我就想去删除元素【1】怎么办,直接上代码:
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(4);
list.add(3);
list.add(2);
list.add(1);
System.out.println("删除操作之前:" + list);
Integer element = 1;
list.remove(element);
//或者直接用下面的代码也行
//list.remove(Integer.valueOf(1));
System.out.println("删除操作之后:" + list);
}
}
运行结果:
结束语
希望这篇文章能帮助新手朋友们避开这个ArrayList删除元素的坑,然后新手朋友们在调用这些 api时,不要只知道把这些函数"点"出来就用,最好养成习惯多去看看源码,看看它到底实现的是什么功能以及怎么实现的。