java - 使用compareTo()按字母顺序对LinkedList进行排序?

标签 java sorting

我有一个 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/

相关文章:

java - 如何修复 JTextField 上的按键监听器?

java - 在运行时使用反射覆盖方法级别@annotation,适用于类级别

algorithm - 选择排序递归关系

sorting - Grails:对嵌套域对象进行排序

java - 在 Java 中对通用元素数组进行排序

c++ - cpp std::list 使用步进添加新元素

javascript - 使用 Javascript Fetch API 对异步获取的数据进行排序

java - DateTimeFormatterBuilder 在 Java 8 中的用法,特别是可选项

java - jar 文件内的 log4j.properties

Java JNLP 桌面快捷方式和图标