Невозможно точно определить точную проблему, не видя весь ваш код.
Тем не менее, я дам вам несколько советов:
1.
... temp.getIndex() != selection ...
Как правило, для элемента в связанном списке не рекомендуется отслеживать свой собственный индекс. Чтобы сохранить правильность индексов, каждая вставка или удаление потребует обхода списка только для обновления индексов.
2.
else if (selection == size()){
Вероятно, здесь есть ошибка, одна за другой.
3.
temp.setPrev(null);
temp.setNext(null);
temp.getPrev().setNext(null);
Последняя строка гарантированно выбрасывает NullPointerException
.
Как только вы исправите эти проблемы, я рекомендую пройтись по вашей программе в отладчике, чтобы посмотреть, действительно ли то, что происходит на самом деле, происходит на каждом этапе.