Набор строк, не содержащих данные при вызове из другого файла - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть два файла классов, 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;
}

1 Ответ

0 голосов
/ 02 февраля 2012

Кажется, что цикл не выполняется.

while (!queue.isEmpty())

что если очередь пуста? Можете ли вы сказать, где это свойство установлено?

...