2012-02-02 5 views
-1

私はGraphBFSとFriendRecという2つのクラスファイルを持っています(これは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; 
} 

答えて

0

ループが実行されていないようです。

while (!queue.isEmpty()) 

キューが空の場合はどうなりますか?そのプロパティが設定されている場所を教えてください。

関連する問題