我的contains
方法适用于较小的索引,但是对于较大的索引(例如测试用例1000、2000、2999)无效。我不明白为什么。我在循环中检查了print语句的输出,该循环显示了我要检查的数字存在于对象数组中。
假定array和element中的对象为int。数据为Object []
public boolean contains(E element) {
boolean flag = false;
if (this.size() == 0) { return flag;}
for (int i = 0; i < this.data.length; i++) {
if (element == this.data[i]) { flag = true; }
System.out.println(this.data[i]);
}
return flag;
}
@Test
public void mustGrowArray() {
OurSet<Integer> ints = new ArraySet<Integer>();
for (int i = 0; i < 3000; i++) {
ints.add(i);
}
assertEquals(3000, ints.size());//passes
assertTrue(ints.contains(1000));// fails
assertTrue(ints.contains(2000));// fails
assertTrue(ints.contains(2999));// fails
}
答案 0 :(得分:1)
==
不是.equals
!
在此行中使用.equals
if (element == this.data[i])
到
if (element.equals(this.data[i]))
希望有帮助。
答案 1 :(得分:0)