大家好,又见面了,我是你们的朋友全栈君。
package 算法;
import java.util.ArrayList; import java.util.List;
public class 集合遍历中删除行不行 { /** * 面试中会问到list遍历能不能使用remove方法,下面就是遇到指定的数就删除 * * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub List<Integer> list=new ArrayList<Integer>(); List<A> list2=new ArrayList<A>(); list2.add(new A(“111”)); list2.add(new A(“112”)); list2.add(new A(“113”)); list2.add(new A(“114”)); list.add(1); list.add(3); list.add(5); list.add(9); for (int i = 0; i < list2.size(); i++) { if(i==2){ list2.remove(i); } System.out.println(i); } for (Integer integer : list) { if(integer==5){ list.remove(integer); } System.out.println(integer); } //正常 // for(int i=0;i<list.size();i++){ // System.out.println(“前:”+list.get(i)); // if(list.get(i)==5){ // list.remove(i); // } // System.out.println(“后:”+list.get(i)); // } // //把i<4,虽然长度都是4但是会报下表越界 // for(int i=0;i<4;i++){ // System.out.println(“前:”+list.get(i)); // if(list.get(i)==5){ // list.remove(i); // } // System.out.println(“后:”+list.get(i)); // } // // //——–总结上面两个可以得出,for(int i=0;i<list.size();i++)这种写法每次遍历都会重新计算list.size()的长度 // // for(int i=0;i<list.size();i++){ // System.out.println(“前:”+list.get(i)); // if(list.get(i)==9){ // list.remove(i); // } // System.out.println(“后:”+list.get(i)); // } //——–总结当删除的是最后一个元素时,后面一个输出语句会报错,因为是先删除的,再次get(i)的i还是原先的长度,但是现在变短了。 } } class A{ public String aa;
public A(String aa) { super(); this.aa = aa; } }
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106023.html原文链接:https://javaforall.cn