java.util.NoSuchElementException在java中使用iterator

我正在尝试使用迭代器在我的Logs列表中遍历列表。 目标是搜索包含与新日志相同的电话号码,类型和日期的日志

但是,我在条件语句中得到了java.util.NoSuchElementException。 有谁知道可能导致问题的原因?

我的代码

public void addLog(String phonenumber, String type, long date, int incoming, int outgoing) { //Check if log exists or else create it. Log newLog = new Log(phonenumber, type, date, incoming, outgoing); //Log exists Boolean notExist = false; //Iterator loop Iterator iterator = logs.iterator(); while (iterator.hasNext()) { //This is where get the exception if (iterator.next().getPhonenumber() == phonenumber && iterator.next().getType() == type && iterator.next().getDate() == date) { updateLog(newLog, iterator.next().getId()); } else { notExist = true; } } if (notExist) { logs.add(newLog); } } 

您在一次迭代中多次调用next() ,强制Iterator移动到不存在的元素。

代替

 if (iterator.next().getPhonenumber() == phonenumber && iterator.next().getType() == type && iterator.next().getDate() == date) { updateLog(newLog, iterator.next().getId()); ... 

使用

 Log log = iterator.next(); if (log.getPhonenumber() == phonenumber && log.getType() == type && log.getDate() == date) { updateLog(newLog, log .getId()); ... 

每次调用Iterator#next() ,它都会向前移动底层光标。