public boolean contains(Object data)
{
Node temp = new Node(data);
Node current = head.getNext();
for(int i = 0; i < size(); i++)
{
//System.out.println(current.getData());
if(temp.getData() == current.getData())
{
System.out.println("true");
return true;
}
else
{
current = current.getNext();
}
}
return false;
}
我的代码在上面,无论如何它都会返回 false。如果它找到一个 true 条件,它会打印 "true",并且仍然返回 false。我在这里做错了什么?我有完全相同的函数,除了它返回一个整数而不是布尔值,并且它使用相同的方法/代码工作得很好.4
我的函数做同样的事情并且工作正常:
public int indexOf(Object data)
{
Node temp = new Node(data);
Node current = head.getNext();
for(int i = 0; i < size(); i++)
{
if(temp.getData() == current.getData())
{
return i;
}
current = current.getNext();
}
return -1;
}
这个表达式有问题:
if(temp.getData() == current.getData())
您的数据由Object
表示已经够糟糕的了 - 它实际上应该是一个参数化类型*。 但是,由于您使用的是 ==
,因此您正在检查对象是否是同一实例,而不是它们是否等效。
将比较更改为改用.equals
。
if(temp.getData().equals(current.getData())
*:如果您想知道,您可以将Node
更改为Node<T>
,将链表实例更改为键入LinkedList<Node<T>>
,并将contains
的方法参数更改为public boolean contains(T data)
。