2016-05-13 2 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; 

I.e. return false после нахождения первого несоответствующего элемента и только вернуть true после проверки всех элементов.

Также обратите внимание, что с использованием == вы выполняете строгую проверку идентичности. Если это не то, что вам нужно, подумайте об использовании equals().