Java Iterator无限循环仅迭代hashmap中的第1项

And*_*w T 2 java iterator neo4j

我正在执行数据库查询,结果我得到了一个HashMap.我想迭代所有结果,但我无限地将结果中的第一项添加到arraylist.

QueryResult result=engine.query(query,params);

while(result.iterator().hasNext()) {
    HashMap res= (HashMap)result.iterator().next();
    Node node=(Node)res.get("n");
    results.add(new BusyProfile(node));
}
Run Code Online (Sandbox Code Playgroud)

如何遍历每个对象,为什么我有无限循环?谢谢!

ass*_*ias 8

每次调用时result.iterator(),都会创建一个新的Iterator,指向第一个项目.

所以在循环之前创建它:

Iterator<?> it = result.iterator();
while (it.hasNext()) {
  HashMap res = (HashMap)it.next();
  //...
}
Run Code Online (Sandbox Code Playgroud)