Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java迭代器.hasNext()始终为true_Java_Object_Hashmap_Iterator_Infinite Loop - Fatal编程技术网

Java迭代器.hasNext()始终为true

Java迭代器.hasNext()始终为true,java,object,hashmap,iterator,infinite-loop,Java,Object,Hashmap,Iterator,Infinite Loop,我已经检查了其他问题,但似乎我并不总是创建一个新的迭代器来检查相同的对象 这是密码 Iterator<Map.Entry<Node, Float>> it = graph.nodeNeighboursIterator(e); System.out.println("extracted node "+ e.getLabel() + " number of neighbours "+ e.sizeNeighbours());

我已经检查了其他问题,但似乎我并不总是创建一个新的迭代器来检查相同的对象

这是密码

        Iterator<Map.Entry<Node, Float>> it = graph.nodeNeighboursIterator(e); 
        System.out.println("extracted node "+ e.getLabel() + " number of neighbours "+ e.sizeNeighbours());
        while(it.hasNext()) {
            System.out.print(i + " " + e.getLabel() + " " + it +"-");
            i++;
        }
System.out.println(“提取节点”+e.getLabel()+“邻居数”+e.sizeNeighbours())
打印正确数量的邻居,但循环仍然没有结束他的循环,您对此有何看法?

it.hasNext()
检查是否有更多数据要返回。这不会消耗数据(换句话说,不会对数据进行迭代)。这个运算是幂等的

这就是为什么循环永远不会结束的原因


您需要通过调用
it.next()
来实际使用数据
it.hasNext()
如果没有更多的元素可返回,则返回false。

您需要修改代码,使其与下面类似

while(it.hasNext()) {
    it.next();
}

是否在循环中调用
it.next()
?目前此测试没有,但我应该在理解代码为什么不起作用时使用它,现在在do stuff中,如果不推进迭代器(通过调用.next()),则只有一个打印和一个整数迭代器要计数循环永远不会结束。我认为hasNext会像next一样迭代循环
while(it.hasNext()) {
    it.next();
}