2016-05-13 112 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()