我有一个LinkedList,它为学生保存数据,每个学生都有一个名字,gpa和ID#,每个学生都是LinkedList中的一个节点。我想按名称按字母顺序对LinkedList进行排序,但我真的不了解如何使用CompareTo()进行排序。所以现在我使用当前name.compareTo(name_of_inputStudent)的字符串compareTo来获得compareTo方法。那么在我的排序方法中,我如何利用该输出对我的数组进行排序?我真的不明白这将如何帮助我识别哪个字符串属于LinkedList中的哪个位置。
答案 0 :(得分:2)
您可以使用方法Collections.sort(...)
。你可以找到javadoc here。要使用该方法,您的Student
类必须实现Comparable
接口。因此,您必须为Student
类选择排序条件,并将其实施到compareTo
方法中。
答案 1 :(得分:2)
如果允许您使用Java库,则无需执行任何其他操作:只需将列表传递给sort
,当您未通过单独的比较器时,会自动使用compareTo
。请注意,排序LinkedList
比排序ArrayList
更昂贵,因为大多数高级的基于比较的排序算法需要随机访问列表,对于数组列表是O(1),但是O( n)链表。
如果您开始实施自己的排序算法,compareTo
可让您确定两个对象是否处于排序位置或是否应切换位置:
仅这两个考虑就足以实现bubble sort。
答案 2 :(得分:0)
在LinkedList的Node类中,实现Comparable接口并覆盖compareTo方法。然后你可以使用Collections.sort(List)。 由于您使用的是链接列表,因此排序将是低效的,因为获取LinkedList中的元素是顺序遍历,即O(n)。