循环删除list中多个元素

错误的做法:

			for(int i= 0;i<list.size();i--){
				for(int j= 0; j<list2.size();j++){
					if(list.get(i).contains(list2.get(j))){
						list.remove(i);
					}
				}
			}
结果:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1

因为在你删除元素的同事list.size()在变小,这样就会照成越界。


正确做法:

//因为要删除list里面的多个的值,所以会涉及到一个问题,就是当你删除掉下标为1的元素时,
  //原来下标为2的元素会自动改变自己的下标为1,后面的元素依次把自己的下标值减一
  
  //鉴于这种情况,我们想循环删除list中的多个元素的话,就必须从后往前删,这样保障了你删除了一个元素之后,
  //list中元素的下标移动不会影响到那些需要删除,但是还未删除到的以元素


public class ListDel {
        public static void main(String[] args) {
            List<String> list = new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("4");
            list.add("5");
            list.add("6");
            list.add("7");
            list.add("8");
            list.add("9");
            list.add("10");
            List<String> list2 = new ArrayList<String>();
            list2.add("3");
            list2.add("7");
            list2.add("9");
            
            for(int i= list.size()-1;i>=0;i--){
                for(int j= 0; j<list2.size();j++){
                    if(list.get(i).contains(list2.get(j))){
                        list.remove(i);
                    }
                }
            }
            
            System.out.println(list.toString());
        }
}
结果:[1, 2, 4, 5, 6, 8, 10]



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值