答案 0 :(得分:1)
您的contains
方法可能存在问题。假设您 找到了重复内容。会发生什么情况是您将变量分配给true
并且继续迭代。这完全扼杀了逻辑;你可以有一个副本,但从不对它采取行动,因为你的布尔代码阻止你这样做。
理想情况下,当您找到匹配项时,必须停止迭代并立即返回。
public boolean contains(int value) {
for(int setItem : set) {
if(setItem == value) {
return true;
}
}
return false;
}
答案 1 :(得分:0)
您应该像这样更改add
方法。
public void add(int x) {
if (contains(x))
return;
if (size >= capacity) {
capacity *= 2;
set = Arrays.copyOf(set, capacity);
}
set[size++] = x;
}