Zen*_*ser -2 java iterator object hashmap infinite-loop
我已经检查过像这样的其他问题,但似乎我并不总是创建一个新的迭代器来检查始终相同的对象。
这是代码
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++;
}
Run Code Online (Sandbox Code Playgroud)
该方法graph.nodeNeighboursIterator执行此操作
public Iterator<Map.Entry<Node, Float>> nodeNeighboursIterator(Node n) {
return this.graph_weighted.get(n).entrySet().iterator();
}
Run Code Online (Sandbox Code Playgroud)
打印System.out.println("extracted node "+ e.getLabel() + " number of neighbours "+ e.sizeNeighbours());出正确数量的邻居,但循环仍然没有结束他的循环,你对此有何看法?
it.hasNext()检查是否有更多数据要返回。这不会消耗数据(换句话说,不会迭代数据)。此操作是幂等的。
这就是为什么你的循环永远不会结束的原因。
您需要通过调用来实际消费数据it.next()。it.hasNext()如果没有更多元素可返回,则返回 false。
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |