2012-12-02 104 views
0

我正在使用堆棧來存儲我正在執行的Graph實現的邊緣。我製作了一個getEdge(Node u,Node v)方法,用於搜索特定邊緣並在發現後返回。我認爲我只是使用包含在堆棧中的搜索(obj o)來搜索邊緣有沒有辦法在棧中搜索某個「any」參數?

我面臨的問題是Edge中有參數(節點u,節點v,字符串類型) 。對於字符串參數,我並不特別在意它是什麼。它可以是任何字符串,並且如果它找到邊緣應該返回它;

public Edge getEdge(Node u, Node v) 
{ 
... 
    Edge temp = new Edge (u, v, /*here is where the string goes*/); 
    return edges.search(temp); 
} 

再一次,我不在乎String存儲在裏面;我只關心節點u和v是否連接在堆棧的邊緣。有沒有一種方法可以將字符串值放在Edge中,比如「any」?

回答

0

您可以創建一個虛擬邊緣作爲參數並以空字符串作爲參數進行搜索。

這當然假設你的overiden equals()方法不使用字符串。

edges.search(new Edge(u,v,"")); 

如果equals()不使用的字符串 - 你可能會需要遍歷堆,沿着線的東西:

for (Edge e: edges) { 
    if (e.first().equals(u) && e.second().equals(v)) return e; 
} 
return null; 
1

Stack.search()Edge對象的平等使用方法檢查equals()Edge類。因此,您必須覆蓋此方法,並在String字段Edge上沒有重音。

相關問題