【实用小代码】 --- 循环中删除数组中指定元素的正确姿势

今天写一个前端逻辑的时候碰到了这种情况,并在前端小姐姐面前装了一把☺☺☺


并且这个问题貌似我在实际开发中碰到的次数还是挺多的,所以记录一下,但是用的语言是java —》 重要的是思想!!!


1 抽象出来的题目

假设有如下数组,数组中的元素我们事先并不知道,现在要求在一个循环内将B和E删掉。
在这里插入图片描述


2 错误的示范

会出问题的code

public static void main(String[] args) {

     List<String> list = new ArrayList<>(5);
     list.add("C");
     list.add("A");
     list.add("B");
     list.add("E");
     list.add("D");

     for (int i = 0; i < list.size(); i++) {
         if ("B".equals(list.get(i)) || "E".equals(list.get(i))) {
             list.remove(i);
         }
     }
     System.out.println(list);
 }

出问题的原因 (相信原因大家肯定都知道,我这里简单描述一下):
在这里插入图片描述


输出结果
在这里插入图片描述


3 正确的答案

不会出问题的code

public static void main(String[] args) {

    List<String> list = new ArrayList<>(5);
    list.add("C");
    list.add("A");
    list.add("B");
    list.add("E");
    list.add("D");
    //注意i的初始值一定为list.size() - 1, 因为这才是数组中的最后一个数据
    //判断条件一定是i>=0,不能是i>0, 因为i = 0 也要参与逻辑的运算
    for (int i = list.size() - 1; i >= 0; i--) {
        if ("B".equals(list.get(i)) || "E".equals(list.get(i))) {
            list.remove(i);
        }
    }
    System.out.println(list);
}

不会出问题的原因
在这里插入图片描述


输出结果
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值