0

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());                                                 
  }
}

ジェネリック型リストをアルファベット順に印刷するにはどうすればよいですか? ご覧になりたい場合は、私のクラス ファイルを次に示します (長いため、ペーストビンに配置しました): DvdManagerDvdLinkedListListInterface、およびNode。ありがとう。

編集:挿入ソートを使用してそれを理解しました:

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);
      }
}
4

1 に答える 1

3

少なくとも 2 つの方法があります。

  1. リンクされたリストを並べ替え順に維持すると、上記の印刷コードが機能します。これにより、挿入に O(n) がかかります。

  2. 印刷部分で Java Collection クラスを使用することに反対しない場合は、すべての映画のタイトルを Collection に追加してから並べ替えることができます (または #1 と同様に、追加時に並べ替え順序を維持する並べ替えられたコレクションを使用します)。そのルートに行く場合は、 Comparator を実装する必要があります

于 2013-11-04T15:36:56.727 に答える