0

私が行っているグラフ実装のエッジを格納するためにスタックを使用しています。特定のエッジを検索し、見つかった場合はそれを返す getEdge(Node u, Node v) メソッドを作成しました。スタックに含まれている search(obj o) を使用して 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 がスタックのエッジで接続されているかどうかだけが気になります。「any」のようにEdgeに文字列値を入れる方法はありますか?

4

2 に答える 2

1

オブジェクトのStack.search()等価性は、クラスのメソッドをEdge使用してチェックされます。したがって、 のフィールドにアクセントを付けずに、このメソッドをオーバーライドする必要があります。equals()EdgeStringEdge

于 2012-12-02T23:23:04.347 に答える
0

空の文字列をパラメーターとして使用してダミーの Edge を作成し、それを検索できます。

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;
于 2012-12-02T23:22:35.173 に答える