2016-05-13 101 views
-1

我試圖實現一個containsAll方法,但我不明白爲什麼它返回不正確的結果。請幫幫我。如何實現containsAll方法

public boolean contains(Object o) { 
    for (int ob = 0; ob < size; ob++) { 
     if (o == obj[ob]) 
      return true; 
    } 
    return false; 
} 



public boolean containsAll(MyList c) { 
    for (int ob = 0; ob < size; ob++) { 
     c.toArray(); 
     if (c.contains(obj[ob])) 

     { 
      return true; 
     } 
    } 

    return false; 
} 

回答

1

它返回不正確的結果,因爲你的第一個匹配的元素被發現後返回true。邏輯應該是:

for (int ob = 0; ob < size; ob++) { 
    /* ... */ 
    if (!c.contains(obj[ob])) { 
     return false; 
    } 
} 

return true; 

即,找到第一個不匹配的元素後返回false,並在檢查所有元素後僅返回true

另請注意,使用==時,您正在執行嚴格的身份比較。如果這不是你想要的,請考慮使用equals()