Я пытаюсь отсортировать самореализуемый двусвязный список, однако он, кажется, повторяется бесконечно, и я не уверен, что делаю неправильно. Любая помощь будет принята с благодарностью.
public void sortLine() {
Module current = this.getLeftMostModule();
Module next = this.getLeftMostModule().getRight();
while(next != this.getRightMostModule()) {
while(next != null) {
if(current.getName().compareToIgnoreCase(next.getName()) > 0) {
swap(current, next);
}
next = next.getRight();
}
current = current.getRight();
}
}
public void swap(Module current, Module next) {
boolean isLeft = false;
boolean isRight = false;
if(current.isLeftMostModule()) {
isLeft = true;
}
if(next.isRightMostModule()) {
isRight = true;
}
Module temp = current;
current = next;
next = temp;
if(isLeft) {
next.setLeftMostModule();
current.setNonMostModule();
}
else if(isRight) {
next.setNonMostModule();
current.setRightMostModule();
}
}
Есть функция подкачки, которую я вызываю, и которую я включил. Спасибо. Мне не разрешено добавлять метод setName, и я не могу получить доступ к полю имени, кроме getName. Однако я могу добавить вспомогательные методы в этот класс.
РЕДАКТИРОВАТЬ - ОБНОВЛЕНО код, однако он все еще не работает. Получение NPE на CompareToIgnoreCase и не получить желаемый результат.