使用 for i 删除(删除一个可以,删除多个不行)
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
System.out.println("没有remove前list的项:" + list.size());
//正常循环
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
for (int i = 0; i < list.size(); i++) {
if (list.get(i) == 3 || list.get(i) == 4)
list.remove(list.get(i));
}
System.out.println("remove后list的项:" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
/*
没有remove前list的项:8
0
1
2
3
4
5
6
7
remove后list的项:7
0
1
2
4
5
6
7
*/
会发现少删除了一个 4,这是因为当第一个 3 被删除的时候 list 的 size 已经发生变化。
使用 Iterator 删除
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
System.out.println("没有remove前list的项:" + list.size());
//正常循环
Iterator<Integer> it = list.iterator();
while (it.hasNext()){
Integer next = it.next();
System.out.println("数字:" + next);
if(next == 3 || next == 4){
it.remove();
}
}
System.out.println("remove后list的项:" + list.size());
for (Integer integer : list) {
System.out.println("数字:" + integer);
}
}
倒着遍历删除
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
//正常循环
for (int i = 0; i < list.size(); i++) {
System.out.println("i的值:" + i + " 对应的数字:" + list.get(i));
}
System.out.println("没有remove前list的项:" + list.size());
//边循环边删除
for (int i = list.size() - 1; i >= 0; i--) {
System.out.println("i的值 " + i + " 对应的数字 " + list.get(i));
if (list.get(i) == 3) list.remove(list.get(i));
}
System.out.println("remove后list的项:" + list.size());
System.out.println("==========remove后的list==========");
for (int i = 0; i < list.size(); i++) {
System.out.println("i的值 " + i + " 对应的数字 " + list.get(i));
}
}