Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种方法可以用“搜索”来搜索某物;任何;堆栈中的参数?_Java_Graph_Stack - Fatal编程技术网

Java 有没有一种方法可以用“搜索”来搜索某物;任何;堆栈中的参数?

Java 有没有一种方法可以用“搜索”来搜索某物;任何;堆栈中的参数?,java,graph,stack,Java,Graph,Stack,我正在使用堆栈来存储我正在执行的图形实现的边。我创建了一个getEdge(Node u,Node v)方法,用于搜索特定的边,并在找到时返回它。我想我应该使用堆栈中包含的搜索(obj o)来搜索边缘 我面临的问题是边中有参数(节点u、节点v、字符串类型)。对于字符串参数,我并不特别关心它是什么。它可以是任何字符串,如果找到边,应该返回它 public Edge getEdge(Node u, Node v) { ... Edge temp = new Edge (u, v, /*here

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

我面临的问题是边中有参数(节点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);
}

再说一次,我不在乎存储了什么字符串;我只关心节点u和v是否连接在堆栈的边上。有没有一种方法可以像“any”一样将字符串值放入Edge中?

您可以创建一个虚拟Edge,并使用空字符串作为参数进行搜索

当然,这假设您的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;
Stack期间,使用
Edge
类的
equals()
方法检查
Edge
对象的相等性。因此,您必须重写此方法,而不强调
字符串
字段