当对List中的整型元素进行删除操作时,可能会遇到一个大坑。即直接使用list.remove(想要删除的元素);进行删除。然而直接这样删除不仅没有达到我们想要的效果,还可能会删除了不想删除的元素
例如:
public static void main(String[] args) {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.remove(1);
Iterator iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
这里我们想要删除元素“1”,然而执行结果确实:
1
3
4
删除了位置为“1”的元素“2”,这便是我遇到的坑
因为这里有两个重载的方法
想要达到删除元素“1”的目的就需要这样做:
list.remove(new Integer(1));
将想要删除的数字变成一个整型的对象,并且在由于List是存储有序的、可重复的数据的。所以当想要删除的元素有多个的情况下,只会从此列表中移除第一次出现的指定元素,如下:
public class Demo4 {
public static void main(String[] args) {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(1);
list.remove(new Integer(1));
Iterator iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
运行结果如下:
运行结果:
2
3
4
1