【发布时间】:2015-03-07 04:25:16
【问题描述】:
我只是想从关系中复制属性键。如果我使用此代码。
Iterable<String> tempkeys;
tempkeys= rel.getPropertyKeys();
while (tempkeys.iterator().hasNext()){
String key = tempkeys.iterator().next();
System.out.println(key);
}
它无限循环。如果我将 Iterable 重铸为 Arraylist,那么它可以完美运行
ArrayList<String> tempkeys;
tempkeys= (ArrayList<String>) rel.getPropertyKeys();
for (int i=0;i<=tempkeys.size();i++) {
String key = tempkeys.iterator().next();
System.out.println(key);
}
如果我调试代码,很明显可迭代计数器在每次调用 .next() 后重置为 0。它在调用期间递增到 1,但在下一次调用 .hasNext() 时又回到 0。
上下文如下。
try (Transaction tx = this.graphDb.beginTx()) {
Node Node1 = JavaCluster.AddUniqueNode("Element", "Name", "Node1");
Node Node2 = JavaCluster.AddUniqueNode("Element", "Name", "Node2");
RelationshipType tt = DynamicRelationshipType.withName("rt");
Relationship rel = Node1.createRelationshipTo(Node2, tt);
rel.setProperty("prop1", "propval1");
rel.setProperty("prop2", "propval2");
ArrayList<String> tempkeys;
tempkeys= (ArrayList<String>) rel.getPropertyKeys();
for (int i=0;i<=tempkeys.size();i++) {
String key = tempkeys.iterator().next();
System.out.println(key);
}
tx.success();
} catch (Exception e) {
System.out.println("Error - exception " + e.toString());
//throw new TransactionFailException("Transaction failed",e);
}
【问题讨论】:
标签: java neo4j iterable embedded-database