[英]How would I sort my java linked(not collections LinkedList) list by item type alphabetically?
我在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和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);
}
}
至少有两种方法:
按排序顺序维护您的链表,这样您上面列出的打印代码将可以正常工作。 这将使插入花费O(n)。
如果您不反对在打印部分使用Java Collection类,则可以将所有电影标题添加到Collection中,然后对其进行排序(或使用排序后的Collection,该类将在您添加类似于#1时保持排序顺序)。 如果走那条路,您将需要实现一个比较器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.