java为何抛出NoSuchElementException异常?

出现这个异常的原因之一是因为线程访问越界
比如以下这种情况

 List<String> list = new ArrayList<>();
 list.add("wo");       
 list.add("ni");
 list.add("ta");
 System.out.println(list);
 Iterator<String> iterator = list.iterator();
 while(iterator.hasNext()){
     if(iterator.next().equals("wo")){
         iterator.remove();
      }
    System.out.println(iterator.next());

很明显是因为Iterator类中的next()方法使用了多次,请看 ArrayList的源码if (i >= size) throw new NoSuchElementException();,在使用迭代器的时候注意next()方法在同一循环中不能出现俩次
改正之后:

while (iterator.hasNext()) {
            String str = iterator.next();
            if (str.equals("wo")) {
                iterator.remove();
                //如果加上这个语句,则全部输出,如果不加只会输出后俩个
                //System.out.println(str);
                continue;
            }
            System.out.println(str);
        }    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值