Согласно этому ответу , грубо говоря, если бы у нас был массив объектов учеников в классе, class [index]! = Student1. Я считаю, что это ошибка, которую я допускаю при реализации моего метода equals для сравнения объекта array [index] с другим объектом. Я полагал, что массив [индекс] и объект, с которым я сравниваю, совпадают.
В приведенном ниже коде показан мой метод getNumStudents, в котором я пытаюсь подсчитать, сколько раз идентификатор ученика появляется в классе. Идентификатор представляет обувь бренда, которую он или она любит (практические упражнения вне лекции). Этот метод в моем классе объектов класса, который реализует интерфейс.
@Override
public int getNumStudents(T anEntry) {
int count = 0;
for (int index = 0; index < numberOfEntries; index++) {
if (roster[index].equals(anEntry)) )
{
counter++;
}
}
return count;
}
Мой метод равных как таковой и реализован в классе ученика:
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?