这是我的代码,即使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();一切都很好
答案 0 :(得分:1)
问题在于Node<T> current
表示current
是Node<T>
而item
是T
。像,
if (current.getValue().equals(item)) { // <-- get the value in current.
contains = true;
}
另外,我建议你return true;
对第一个相等的值。您应该使用方法替换getValue()
以从T
获取Node
。
修改强>
另一种可能性是size
未正确设置;在这种情况下,你的循环体将不会被输入。