2015-01-02 84 views
0

我有一個鏈接列表實現程序,我在其中比較兩個Object值。列表可以具有任何類型的Object值。然後我有一個功能來刪除重複。在比較雙重值時,它並不適用於所有其他類型。 這裏是代碼片段:在java中比較double值給出了奇怪的答案

//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((runnerNode.getNextNode().getValue()).equals(currentNode.getValue())){ 

我試圖測試這個下面:

double a = 159.25, b = 159.25; 
System.out.println(a == b); 

,它給真正輸出。

請讓我知道我是否缺少任何東西。

回答

0

當使用==與對象進行比較時,您不測試它們是否相等 - 只是它們指向相同的對象。通過使用.Equals,您正在測試這些值是否相等。對double值的測試與比較對象不同,因爲您要比較基本類型而不是對象類型