我在Java中的LinkedList的contains(T)方法有什么问题?

时间:2014-11-10 02:55:45

标签: java

这是我的代码,即使if应该为true,它每次都返回false。有谁知道它出了什么问题?

public boolean contains(T item) {
    boolean contains = false;
    Node<T> current = first;

    for (int i = 0; i < size; i++) {
        if (current.equals(item)) {
            contains = true;
        }
        current = current.next;
    }
    return contains;
}

我认为current.equals(item)可能有问题吗?我已经尝试将其更改为current.getData()。equals(),并尝试将项目和当前值都转换为字符串,但我确信这不是必要的。

编辑:修正了它。解决方案是将current.equals()更改为current.getData()。equals()。这不起作用的唯一原因是因为我有Node current = first;并且第一个始终为空。将其更改为Node current = first.getNext();一切都很好

1 个答案:

答案 0 :(得分:1)

问题在于Node<T> current表示currentNode<T>itemT。像,

if (current.getValue().equals(item)) { // <-- get the value in current.
   contains = true;
}

另外,我建议你return true;对第一个相等的值。您应该使用方法替换getValue()以从T获取Node

修改

另一种可能性是size未正确设置;在这种情况下,你的循环体将不会被输入。