如果比较对象数组索引和对象,如何正确使用equals()?

移动性

根据这个答案,大致来说,如果我们有一个Classroom对象数组的学生对象,则class [index]!= student1。我相信这是我在实现equals方法以将array [index]对象与另一个对象进行比较时所犯的错误。我相信array [index]和我要比较的对象是相同的。

下面的代码显示了我的getNumStudents方法,在该方法中,我尝试计算学生ID在班级中出现的次数。ID代表他或她喜欢的品牌鞋子(课堂外练习)。这个方法在我的教室对象类中,该类实现了一个接口。

@Override
public int getNumStudents(T anEntry) {
    int count = 0;
    for (int index = 0; index < numberOfEntries; index++) {

       if (roster[index].equals(anEntry)) )
        {
            counter++;
        } 
    } 

    return count;
}

我的equals方法就是这样,并在学生课堂中实现:

public boolean equals(Student student) {
    if (this == student)
    {
        return true;
    }
    if (student == null)
    {
        return false;
    }
    if (this.getID() != student.getID())
    {
        return false;
    }

    return true;
}

我不知道我是否正确地做了hashCode的覆盖,但它是(在Student类中):

   @Override
    public int hashCode() {
    int result = 17;
    result = 31 * result + studentID;
    return result;
  }

我已经将错误的范围缩小到了最有可能的地方:

   if (roster[index].equals(anEntry)) )

特别

roster[index].equals(anEntry))

我应该调用什么或应该如何调整getNumStudents(T anEntry)方法以正确返回Classroom对象数组中具有特定ID(表示鞋子类型)的学生人数?

亚历山大·波格里布尼亚克(Alexander Pogrebnyak)

您的equals签名是错误的。

equals方法的正确签名必须如下。

public boolean equals(Object other)

然后在方法内部,您应该检查它是否具有可比较的类型,如果您真的需要它具有类型Student,则必须检查该类型false否则返回

在您的情况下,这是实施所需的最小更改:

public boolean equals(Object other)
{
    if (this == other)
    {
        return true;
    }

    // This also works if `other` is `null`
    if (!(other instanceof Student))
    {
        return false;
    }

    // Now we cast it to `Student`
    final Student student = (Student) other;

    if (this.getID() != student.getID())
    {
        return false;
    }

    return true;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 DataWeave 比较 JSON 对象数组并返回索引

如何比较对象数组和嵌套对象数组?

如何比较两组对象不使用 Comparator 和 Streams 覆盖 equals/hashCode

如果我不知道数组键/索引,如何使用对象访问数组?

如何索引对象数组

如何从角度或JavaScript的对象数组中获取比较值的索引

如何使用对象数组索引堆叠元素?

如何使用2d地理索引在Mongoose模式中正确定义数组中的对象

如何正确比较 Java 中的字符串(和对象)?

如何比较对象数组中的对象值?

如何比较对象数组以查找丢失的对象

如何从javascript中的数组和对象比较中筛选值?

如何在Javascript中比较数组和对象?

如何根据属性值比较和过滤数组对象?

如何比较数组和对象以找到匹配的PHP

在此示例中,如何比较数组值和对象属性?

UnusedNullCheckInEquals :通过 equals 方法比较对象的正确方法是什么?

比较数组的值和对象数组的键

比较对象数组和ID数组

比较对象数组和奇异值数组

如何使用索引数组来导航对象数组

使用对象数组创建索引

如何使用 rezct 钩子按索引和属性显示数组对象

如何将数组中的对象与数组中的其他对象进行比较和取消设置?

获取基于索引数组与对象数组的比较的第三数组

如何正确映射对象数组

我如何正确地使用unique_ptr和make_unique声明对象数组

JavaScript:比较对象数组和嵌套对象数组

如何使用Powershell将对象与数组进行比较?