如何修复包含泛型的方法

时间:2019-06-26 06:16:05

标签: java

我的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
}

2 个答案:

答案 0 :(得分:1)

==不是.equals

在此行中使用.equals

if (element == this.data[i])

if (element.equals(this.data[i]))

希望有帮助。

答案 1 :(得分:0)

比较equals而不是==

使用此`for循环:

for (int i = 0; i < this.data.length; i++) {
    if (element.equals(this.data[i])) {
       flag = true;
    }
    System.out.println(this.data[i]);
}

要了解equals==运算符之间的区别,请通过以下链接进行操作: img2