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();
}