У меня есть два файла классов, GraphBFS и FriendRec (который является расширением GraphBFS). У меня есть этот метод (getNodesAtDepth) в GraphBFS, включенный ниже, и один в FriendRec под названием getFriendRecommendations, также включенный ниже. Когда список узлов создается в getNodesAtDepth, он работает как положено и включает в себя все необходимые строки; однако, когда он вызывается в getFriendRecommendations, он пуст и там ничего не имеет. У кого-нибудь есть идея, что происходит?
public Set<String> getNodesAtDepth(int depths) {
Set<String> ret = new HashSet<String>();
setInitialNode(initNode);
while (!queue.isEmpty()) {
String node = fetchFromQueue();
setExploredNode(node);
if(depths<depth.get(node)){
break;
}
if(depth.get(node)==depths){
ret.add(node);
}
Set<String> neighbors = graph.getNeighbors(node);
for (String n : neighbors) {
if (status.get(n) == null) {
System.out.println("Node" + n);
setFrontierNode(n);
depth.put(n, (depth.get(node)+1));
addToQueue(n);
//ret.add(n);
}
}
}
System.out.println("Nodes at Depth Level" + depths + ":");
System.out.println(ret.toString());
return ret;
}
public List<Recommendation> getFriendRecommendationsInRankOrder(String node, int threshold) {
List<Recommendation> recs = new ArrayList<Recommendation>();
Set<String> friendsOfFriends = getNodesAtDepth(2);
System.out.println("Geoffroy:" + getNodesAtDepth(2).toString());
System.out.println("Blank Number" +friendsOfFriends.size());
for (String n: friendsOfFriends){
System.out.println("Support = "+getSupportFor(n));
if(getSupportFor(n)>=threshold){
System.out.println("BRANKKK");
Recommendation recTemp = new Recommendation(n,getSupportFor(n));
recs.add(recTemp);
}
}
System.out.print("t");
// Now sort in reverse order of support
Collections.sort(recs, Collections.reverseOrder());
return recs;
}