java.util.NoSuchElementException 在 java 中使用迭代器

标签 java iterator nosuchelementexception

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

但是,我的条件语句中出现 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<Log> 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() 时,它都会向前移动底层游标。

关于java.util.NoSuchElementException 在 java 中使用迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106753/

相关文章:

javascript - 如何在 ES6 类方法中使用迭代器

java - 使用 selenium 进行网页自动化期间链接未打开

java - 是否可以让 jackson 2 识别@codehause...JsonIgnoreProperties?

java - 如何在登录时显示带有欢迎消息的通知?

python 3.x : Subtract Same Index from Sequential Lines

c++列表迭代器的段错误

java - Scanner.nextInt() NoSuchElementException

java - 扫描仪正在创建 NoSuchElementException 错误,我不明白为什么

Java - 函数式浮点计算

java - 我必须将输入文件放在 eclipse(java) 中的哪里才能写入它