练习:
有下列集合,[1,2,1,1,1,1,4,5] 要求:删除集合中所有的数值1
public class Test { public static void main(String[] args) { //定义集合,添加数据 Listlist = 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) { Listlist = 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); } }
运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)