当前位置: 首页 > 面试题库 >

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

祝允晨
2023-03-14
问题内容

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

但是,我在条件语句中得到了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。我使用StringTokenizer解析行中的每个元素。但是在这样做的时候,我遇到了以下错误消息。任何关于这方面的帮助,提前感谢。错误消息: 我的代码就像跟随; 和文件示例为:

  • 本文向大家介绍在Java中迭代ArrayList,包括了在Java中迭代ArrayList的使用技巧和注意事项,需要的朋友参考一下 Java中的Iterator用于遍历集合中的每个元素。使用它遍历,获取每个元素,或者甚至可以从ArrList中删除元素。要使用迭代器遍历集合的内容,请首先通过调用集合的iterator()方法来获得一个迭代器,使其到达集合的开头。在那之后,建立一个循环来调用hasNe

  • 在“掌握C++17 STL”一书中,我看到iterator和const_iterator在一个类中实现,使用条件来减少代码重复 下面是我对简单数组类的实现(跳过数组类的大部分代码): 这段代码编译时没有错误,但iterator有点不可用: 给出错误: 我该如何使用那个迭代器呢?还是我应该从书上放弃这个想法呢?

  • 问题内容: 我正在浏览以下代码示例: 我想知道使用Iterator接口的实现而不是使用普通的for-each循环有什么好处? 如果此示例不相关,那么当我们应该使用Iterator时会是一个好的情况吗? 谢谢。 问题答案: 该 for-each循环 与Java 5中引入的,所以它不是那么“老”。 如果只想迭代一个集合,则应为每个循环使用 但是有时“普通的” 迭代器的 方法对于检查 迭代器 是否还有更

  • 我是一个胡子新手,我想知道如何在这个地图上反复使用胡子 地图键名称各不相同。理想情况下,我希望mustache可以迭代其键和值。因此,在java中,它将如下所示: 所以有人能告诉我如何在小胡子中实现以上。我的意思是模板会是什么样子?我尝试了这个模板,但到目前为止还没有运气:( 所以当我运行这个模板时,输出