gpt4 book ai didi

java - 如何按项目类型按字母顺序对 java 链接(不是集合 LinkedList)列表进行排序?

转载 作者:行者123 更新时间:2023-12-01 23:27:27 24 4
gpt4 key购买 nike

我在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);
}
}

最佳答案

至少有两种方法:

  1. 按排序顺序维护您的链接列表,这样您上面列出的打印代码就可以正常工作。这将使插入花费 O(n) 时间。

  2. 如果您不反对在打印部分使用 Java Collection 类,您可以将所有电影标题添加到一个 Collection 中,然后对其进行排序(或者使用排序的集合,该集合将在您添加时保持排序顺序)类似于#1)。如果您走这条路,您将需要实现一个比较器

关于java - 如何按项目类型按字母顺序对 java 链接(不是集合 LinkedList)列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19771174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com