0
我有一個UndirectedSparseGraph g,其中我存儲了兩種節點,即用戶和線程都擴展節點。對於用戶u,我希望檢索其2-dist鄰域,即與u鏈接的其他用戶,因爲它們對屬於你的1-dist鄰域的線程有邊緣。我知道KNeighborhoodFilter是從呼叫者節點檢索半徑爲「k」的節點的方式......這意味着,在我的情況下,1跳和2跳用戶都將返回,因此我必須過濾由此產生的集合。這是我到目前爲止:如何篩選KNeighborhoodFilter的結果?
// filter users in 2-dist nei
Predicate<Node> onlyUsers = new Predicate<Node>() {
@Override
public boolean apply(Node node) {
return node.getName().startsWith("u");
}
};
// find neighbors of nodes with degree i
Filter<Node, Edge> filter = new KNeighborhoodFilter<Node, Edge>(u, 2, KNeighborhoodFilter.EdgeType.IN_OUT);
// retrieve the nodes - but here we have both types of nodes
Collection<Node> twoDistNei = filter.transform(g).getVertices();
// filter the collection to retain only threads
Collection<Node> twoDistUsers = Collections2.filter(twoDistNei, onlyUsers);
我在這個方法的正確軌道?還是應該按照不同的模式來完成我的任務,即從選定用戶的距離中檢索用戶?
最好的問候, 西蒙娜