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()
,它都会向前移动底层光标。
- 无法从Node 转换为Node ?
- arraylist并发修改
- 为什么这段代码不会导致ConcurrentModificationException?
- 如何从iterator()获取正确顺序的元素
- 使用Iterator循环时将项添加到HashMap
- Java Joda Time – 实现Date范围迭代器
- java.util.ConcurrentModificationException&iteration?
- 如何在没有ConcurrentModificationException的情况下对Collection 进行交互并修改其项目?
- ConcurrentModificationException(Java)