我正在尝试实现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;
}
答案 0 :(得分:1)
返回错误的结果,因为在找到第一个匹配元素后返回true
。逻辑应该是:
for (int ob = 0; ob < size; ob++) {
/* ... */
if (!c.contains(obj[ob])) {
return false;
}
}
return true;
即。找到第一个不匹配的元素后返回false
,并在检查完所有元素后返回true
。
另请注意,使用==
,您正在执行严格的身份比较。如果这不是您所追求的,请考虑改为使用equals()
。