我有一个 LinkedList,其中保存了学生的数据,它有每个学生的姓名、gpa 和 ID#,每个学生都是 LinkedList 中的一个节点。我想按名称的字母顺序对 LinkedList 进行排序,但我不太了解如何使用 CompareTo() 进行排序。所以现在我有一个compareTo方法,它使用当前name.compareTo(name_of_inputStudent)的字符串compareTo。那么在我的排序方法中,我将如何利用该输出对数组进行排序?我真的不明白这将如何帮助我识别哪个字符串属于 LinkedList 上的哪个位置。
最佳答案
如果您被允许使用 Java 库,则无需执行任何其他操作:只需将列表传递给 sort
,当您这样做时,它会自动使用 compareTo
不通过单独的比较器。请注意,对 LinkedList
进行排序比对 ArrayList
进行排序的成本更高,因为大多数高级的基于比较的排序算法需要随机访问列表,对于一个列表来说,其复杂度为 O(1)。数组列表,但链表的复杂度为 O(n)。
如果您开始实现自己的排序算法,compareTo
可以让您确定两个对象是否处于排序位置或者它们是否应该交换位置:
- 如果将靠近列表前面的对象与远离列表前面的对象进行比较,并且结果为负或零,则这些对象彼此之间的顺序正确
- 如果结果是肯定的,则对象应该改变位置,以便距离起点较远的物体会更接近起点。
仅考虑这两个因素就足以实现 bubble sort .
关于java - 使用compareTo()按字母顺序对LinkedList进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564147/