我正在做排序链表作业,对设置比较器感到困惑。我已经编写了一个链表类,它被参数化以接受任何类。链表运行良好,但我对如何为列表设置比较器感到困惑,因为它是参数化的。我是否首先创建一个比较器类并将其传递给构造函数?比较器将用于保持列表的顺序。或者我需要在我设置的类中有一个变量来更改链表类中定义的比较器的行为吗?对不起,如果这不是很有意义,因为我有点困惑。谢谢
编辑:
我应该澄清一下,我们不允许使用Java集合库中的LinkedList,我们正在设计自己的(是的,我知道我在实践中不会这么做,但这是一个家庭作业设计驱魔)。我的LinkedList类看起来有点像这样:
public class LinkedList<T> implements Iterable<T> {
private LinkedListNode<T> head = null;
private int size = 0;
.
.
.
//various methods for retrieving size, iterator etc...
}
插入元件后,应将其放置在正确的位置。我的想法是通过一个比较器来确定这一点,该比较器在实例化LinkedList对象时传递。也许是这样的:
LinkedList<MyClass> myList(MyClass.myComparator);
我的问题是,我需要在对象的整个生命周期中为同一个类(MyClass)使用多个比较器。我也很困惑如何在LinkedList中设置比较器。
LinkedList
不是一个排序集合,因此在构造过程中不能将其传递给Comparator。请注意,它的构造函数都不接受Comparator
。
相反,你可以构建它并添加到它中,然后使用
Collections.sort(myList, new MyComparator());
您可以使用以下语法编写参数化类型T
的Comparator
。
public class MyComparator implements Comparator<T>() {
public int compare (T a, T b) {
// Put comparison logic here.
}
}
显然,您希望用您的类型名称替换上面的T
。