0

我正在使用堆栈来存储我正在执行的 Graph 实现的边缘。我创建了一个 getEdge(Node u, Node v) 方法,用于搜索特定边并在找到时返回它。我以为我会使用堆栈中包含的 search(obj o) 来搜索 Edge

我面临的问题是 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()性期间。因此,您必须覆盖此方法,并且在.Edgeequals()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 回答