我正在使用堆栈来存储我正在做的Graph实现的边缘。我制作了一个getEdge(Node u,Node v)方法,用于搜索特定边缘,如果找到则返回它。我以为我只会使用堆栈中包含的搜索(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是否连接在堆栈的边缘。有没有办法将字符串值放在Edge中,如“any”?
答案 0 :(得分:1)
使用Stack.search()
类的方法Edge
检查equals()
个Edge
个对象的相等性。因此,您必须在String
的{{1}}字段中重复此方法而不重音。
答案 1 :(得分: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;