我在Neo4j中有一个图表,该图表中的每个关系都有一个名为InverseRandomNumber的属性。我想遍历所有节点,并且每个节点都从连接到节点的所有关系中获取这些属性,对这些属性值求和并将sum保存为节点中的属性。 InverseRandomNumber是一个整数或双精度,我使用Java中嵌入的Neo4j 2.3.3。您可以在下面找到我的代码。
Label myLabel = DynamicLabel.label("Data");
final RelationshipType type2 = DynamicRelationshipType.withName("Rel");
ResourceIterator<Node> users = graphDb.findNodes( myLabel, "Group", "Random" );
Node firstUserNode;
while ( users.hasNext() )
{
firstUserNode = users.next();
ArrayList<Object> RelList = new ArrayList<Object>();
if(firstUserNode.hasRelationship(Direction.BOTH)){
for (Relationship relationship : firstUserNode.getRelationships(Direction.BOTH)){
RelList.add(relationship.getProperty("InverseRandomNumber"));
}
}
Double sum = 0.0;
Double dd = 0.0;
for(int j=0; j < RelList.size(); j++){
dd = toDouble(RelList.get(j));
sum+=dd;
}
firstUserNode.setProperty("SumInverse",sum);
}
users.close();
在上面的代码中,我使用toDouble
方法将我得到的值变为double。这是处理数值属性的正确方法还是更有效和准确的另一种方法?
有什么想法吗?
答案 0 :(得分:0)
如果您不想使用BigDecima:
BigDecimal.valueOf((Double)n.getProperty("InverseRandomNumber"));