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”,它仍然返回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;
}
答案 0 :(得分:2)
您对此表达式有疑问:
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)
。