有没有办法在堆栈中搜索带有“any”参数的内容?

时间:2012-12-02 23:18:36

标签: java graph stack

我正在使用堆栈来存储我正在做的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”?

2 个答案:

答案 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;