大家好,又见面了,我是你们的朋友全栈君。
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;
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106023.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...