【问题标题】:Get the index of the Node in a LinkedList which contains the given value in java获取包含java中给定值的LinkedList中节点的索引
【发布时间】:2015-06-28 10:02:22
【问题描述】:

我有一个链表

private LinkedList<Node> vertices;

这里是类节点

public class Node 
{
    String value;
    linkedList edges ;
    public Node()
    {
        value=null;
        edges=new linkedList();
    }
}

现在我上面提到的 LinkedList 包含我图中的节点。我想要做的是将字符串值传递给一个方法。这个方法应该检查 LinkedList 中的节点是否包含一个值等于的节点我传递的值。如果是这样,它应该返回节点的索引。

这是我尝试做的事情

public Node getNode(String value)
    {
        int index=vertices.indexOf(value);//this is where the problem is.
        //index is getting assigned a value -1 
        return vertices.get(index);
    }

并以这种方式调用方法

temp2=getNode(header[dest]);

但是对方法vertices.indexOf(value) 的调用返回-1(-1 表示它没有它。尽管它有一个值等于我传递的值的节点)。我如何检查与我传递的值匹配的值的节点。 顶点是节点类型,我正在传递一个字符串值。

【问题讨论】:

  • indexOf 方法用于在另一个字符串中定位一个字符或字符串。 indexOf 返回一个整数,其值是字符串中子字符串开始的位置。 如果未找到子字符串,则返回 -1。因此,如果您正在寻找“abc”并且一个节点包含“xabc”,那么您会得到一个匹配项。如果一个节点包含“yaleabcistheone”,你也会得到一个匹配。我相信您说过您希望字符串完全匹配,因此您想使用“.equals”而不是 indexOf**
  • 这不是问题。问题是我正在向 indexof 方法发送一个字符串值。它无法将字符串与节点进行比较。要么我发送一个节点而不是字符串值,要么我需要一些机制来将一个节点与一个字符串值进行对比。

标签: java linked-list


【解决方案1】:

在您的节点中,您需要实现 equals 方法,因为 LinkedList 的 indexOf 方法在内部使用 equals 方法来比较您传递的 Node 与 List 中的其他现有节点,例如:

public boolean equals(Node otherNode) {
    //... compare node values
}

你需要的方法是:

 public Node getNode(Node value)//or create node internally with string that you get as input parameter
                     ^^^^^

【讨论】:

  • 我无法发送节点值进行比较。我只需要发送一个字符串值
【解决方案2】:

根据JavaDocsindexOf 方法在内部使用了equals 方法,您似乎没有重载。因此,您尝试将 StringNode 对象进行比较。

要解决此问题,您需要覆盖 Node 类中的 equals(Object obj) 方法。

类似这样的:

@Override
public boolean equals(Object obj) {
    if(obj instanceof Node) {
        Node comp = (Node)obj;
        return comp.value.equals(this.value);
    }

    else if(obj instance of String) { 
        String comp = (String)obj;
        return comp.equals(this.value)
    }

    return false;
}

【讨论】:

猜你喜欢
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
相关资源
最近更新 更多