我有一个链表实现程序,我在其中比较两个Object值。 List可以具有任何类型的Object值。然后我有一个删除重复的功能。在比较双值时,它并不能确定适用于所有其他类型的位置。 以下是代码段:
//Method to remove duplicates using two pointers
public void removeDups2(){
if(head.getNextNode() == null)
return;
Node currentNode = head, runnerNode;
while(currentNode != null){
runnerNode = currentNode;
while(runnerNode.getNextNode() != null){
if(runnerNode.getNextNode().getValue() == currentNode.getValue()){
runnerNode.setNextNode(runnerNode.getNextNode().getNextNode());
listcount--;
}
else{
runnerNode = runnerNode.getNextNode();
}
}
currentNode = currentNode.getNextNode();
}
}
但是,如果我用 .equals()替换if条件,那么它就可以了。
if((runnerNode.getNextNode().getValue()).equals(currentNode.getValue())){
我尝试过以下测试:
double a = 159.25, b = 159.25;
System.out.println(a == b);
并提供 true 输出。
如果我遗漏了任何东西,请告诉我。
答案 0 :(得分:0)
使用==
与对象进行比较时,您不会测试它们是否等效 - 只要它们指向同一个对象。通过使用.Equals
,您将测试值是否相等。您对double
值的测试与比较对象不同,因为您要比较基本类型而不是对象类型