现在我尝试使用neo4j实现一个项目。 我实施了我的评估员。 bfs上的每个节点都有两组:in和out。 在途中遇到一个节点,做一些交叉检查并决定是否继续。 但我现在的代码没有进入评估者。我添加了一些打印检查点。什么都没有出现。
public final class MyEvaluator implements Evaluator {
ArrayList<HashSet<Integer>> templin;
ArrayList<HashSet<Integer>> templout;
Node tempnode;
public MyEvaluator(Node node, ArrayList<HashSet<Integer>> lin,ArrayList<HashSet<Integer>> lout ) {
templin=lin;
templout=lout;
tempnode=node;
}
@Override
public Evaluation evaluate(Path path) {
Node pc=path.endNode();
System.out.println("test!!!");
if (Collections.disjoint(templin.get((int) pc.getProperty("nodeID")), templout.get((int) tempnode.getProperty("nodeID")))){
//Returns true if the two specified collections have no elements in common.
//System.out.println("here");
templin.get((int) pc.getProperty("nodeID")).add((int) tempnode.getProperty("nodeID"));
System.out.println(templin.get((int) pc.getProperty("nodeID")));
return Evaluation.INCLUDE_AND_CONTINUE;
}else{
return Evaluation.EXCLUDE_AND_PRUNE;
}
}
}
public Traverser nodes( Node node, ArrayList<HashSet<Integer>> lin,ArrayList<HashSet<Integer>> lout )
{
return friendsTraversal
.evaluator(new MyEvaluator(node, lin, lout))
.traverse( node );
}
答案 0 :(得分:0)
你还必须迭代遍历结果,遍历是一个懒惰的操作。
for (Node n: nodes(...)) {
// do something
}