Я пишу односвязный класс списка с нуля, но где-то мое удаление по индексу и вероятные методы indexOf не работают.
public E remove(int index){
if(index < 0 || index > size-1)
throw new IndexOutOfBoundsException("IndexOutOfBounds");
if(index == 0) {
E temp1 = head.data;
Node temp2 = head.next;
head.next = null;
head = temp2;
return temp1;
}
Node<E> hopper = getNode(index-1);
Node<E> toRemove = hopper.next;
E temp = toRemove.data;
hopper.next = hopper.next.next;
toRemove.data = null;
toRemove.next = null;
return temp;
}
Что касается удаления, я подозреваю, что есть какой-либо случай или какая-то логическая ошибка. В моем тестере JUnit он, кажется, вообще ничего не удаляет. А что касается indexOf:
public int indexOf(Object o){
if(o == null) {
Node<E> hopper = head;
for(int i = 0; i < size-1; i++) {
if(hopper.data == o)
return i;
hopper = hopper.next;
}}
else {
Node<E> hopper = head;
for(int i = 0; i < size-1; i++) {
if(hopper.data.equals(o))
return i;
hopper = hopper.next;
}}
return -1;
}
В моем тестере JUnit метод содержит не работает, и этот метод буквально просто вызывает indexOf для выполнения поиска.
Я могу предоставить любой дополнительный код, если это необходимо. Если кто-то может помочь объяснить, где я иду не так, я был бы очень признателен. Спасибо!