Как бы я отсортировал свой связанный с Java (не коллекции LinkedList) список по типу элемента в алфавитном порядке?

Я создал общий связанный список в java (а не встроенный) и имею класс LinkedList, класс ListInterface, класс Node, класс Dvd и класс DvdManager. Моя цель - иметь возможность добавлять DVD в связанный список и распечатывать их в алфавитном порядке. Мне удалось написать код для добавления, удаления и добавления копий DVD в связанный список. Однако я не могу понять, как распечатать список в алфавитном порядке. Я могу распечатать список, используя следующий код, но он не печатается в алфавитном порядке на основе названия элемента:

if (movies.isEmpty()) {
  System.out.println("The list is empty.");
} else {
  for (int i = 1; i <= movies.length(); i++) {
    System.out.println(movies.get(i).getTitle());                                                 
  }
}

Как мне получить общий список типов для печати в алфавитном порядке? Вот мои файлы классов, если хотите взглянуть (я помещаю их в pastebin, потому что они длинные): DvdManager, DVD, LinkedList, ListInterface и Узел. Спасибо.

Изменить: я понял это, используя сортировку вставками:

public void add(Dvd item) {
  DvdNode addThis = new DvdNode(item);
  if(head == null) {
    head = addThis;
  } else if(item.getTitle().compareToIgnoreCase(head.getItem().getTitle()) < 0) {
      addThis.setNext(head);
      head = addThis;
    } else {
        DvdNode temp;
        DvdNode prev;
        temp = head.getNext();
        prev = head;
        while(prev.getNext() != null && item.getTitle().compareToIgnoreCase
            (prev.getNext().getItem().getTitle()) > 0) {
          prev = temp;
          temp = temp.getNext();
        }
        addThis.setNext(temp);
        prev.setNext(addThis);
      }
}

person jdc987    schedule 04.11.2013    source источник
comment
Как выглядит ваш LinkedList класс? А какие объекты вы храните в списке?   -  person Paul Samsotha    schedule 04.11.2013
comment
К вашему сведению, movie.get(i) очень неэффективен. Если у вас есть связанный список, рассмотрите возможность перехода по ссылкам с помощью Movies.next.   -  person dkatzel    schedule 04.11.2013
comment
Вы можете отсортировать свой LinkedList перед печатью, либо во время вставки элементов, либо в любое другое время. Но это зависит от причины, по которой вы используете LinkedList. Почти во всех случаях, когда используется LinkedList, причина заключается в сохранении определенного порядка, который не может быть восстановлен позже путем сортировки. Нам нужна дополнительная информация о вашем LinkedList и причинах вашего LinkedList   -  person mschenk74    schedule 04.11.2013


Ответы (1)


Есть как минимум 2 способа:

  1. поддерживайте свой связанный список в порядке сортировки, таким образом, ваш код печати, указанный выше, будет работать. Это приведет к тому, что вставки будут занимать O (n).

  2. Если вы не против использования классов Java Collection во время печати, вы можете добавить все свои названия фильмов в коллекцию, а затем отсортировать ее (или использовать отсортированную коллекцию, которая будет поддерживать порядок сортировки при добавлении аналогично # 1). Если вы пойдете по этому пути, вам нужно будет реализовать компаратор

person dkatzel    schedule 04.11.2013
comment
Спасибо. Я, наконец, понял это, используя сортировку вставками. - person jdc987; 08.11.2013