练习:
有下列集合,[1,2,1,1,1,1,4,5] 要求:删除集合中所有的数值1
public class Test {
public static void main(String[] args) {
//定义集合,添加数据
List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(1);
list.add(1);
list.add(1);
list.add(1);
list.add(4);
list.add(5);
System.out.println(list);
for(int i = 0;i < list.size();i++) {
if(list.get(i) == 1) {
list.remove(i);
}
}
System.out.println(list);
}
}
用for循环遍历之后会发现会删除不干净
这是因为每次遍历后,下标i都会自加,因此会存在取不到值的情况
修改方式一:
for(int i = 0;i < list.size();i++) {
if(list.get(i) == 1) {
list.remove(i);
i--;
}
}
修改方式二:
//从后向前遍历
for(int i = list.size() - 1;i >= 0;i--) {
if(list.get(i) == 1) {
list.remove(i);
}
}
修改方式三:
while(list.contains(1)) {
int index = list.indexOf(1);
list.remove(index);
}
附全部代码:
import java.util.ArrayList;
import java.util.List;
public class Test01 {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(1);
list.add(1);
list.add(1);
list.add(1);
list.add(4);
list.add(5);
System.out.println(list);
//方式一
// for(int i = 0;i < list.size();i++) {
// if(list.get(i) == 1) {
// list.remove(i);
// i--;
// }
// }
// System.out.println(list);
//方式二
// for(int i = list.size() - 1;i >= 0;i--) {
// if(list.get(i) == 1) {
// list.remove(i);
// }
// }
// System.out.println(list);
//方式三
while(list.contains(1)) {
int index = list.indexOf(1);
list.remove(index);
}
System.out.println(list);
}
}
运行结果:



