获取java.util.NoSuchElementException,即使我调用.next()一次

时间:2018-03-10 02:50:36

标签: java nosuchelementexception

即使我已经打电话给Iterator.next(),我仍然有nosuchelementexception。

ListIterator<BankAccount_4> userDataIterator = userData.listIterator();
                        while (userData.iterator().hasNext()){
                            BankAccount_4 bankAccount4 = userDataIterator.next();
                           if (bankAccount4.getAccountNum()!=bankAccount_4.getAccountNum()) {
                               userDataIterator.add(bankAccount_4);
                               String fileName = bankAccount4.getAccountNum() + " - " + bankAccount4.getCustomerAccName() + "'s Account details";
                               dataPersistency(displayAccount(bankAccount4) + "\n\n" + computeInterest(bankAccount4), fileName);
                           }
                       }

1 个答案:

答案 0 :(得分:2)

你的第二行(while (userData.iterator().hasNext()){)似乎每次都在检索一个新的迭代器。新迭代器可能与现有迭代器不在同一个位置,因此您始终会询问启动后是否存在元素(以非常低效的方式)。我怀疑发生的事情是你在列表末尾迭代清除,因为while条件总是正确的。

为什么你不只是查询已有的迭代器(userDataIterator.hasNext())?更好的是,为什么不使用Java for-each loop并且明确地忽略迭代器呢?它对于你正在做的事情来说基本上是语法糖,但更简洁,没有搞砸它的风险。