[英]Setting comparator on instantiation for parametrized Linked List
我正在进行排序的链表作业,并且对设置比较器感到困惑。 我已经编写了一个参数化接受任何类的链表类。 链表工作正常,但是我对如何为列表设置比较器感到困惑,因为它已参数化。 我首先要创建一个比较器类并将其传递给构造函数吗? 比较器将用于维护列表的顺序。 还是我需要在设置的类中包含一个变量,以更改在链表类中定义的比较器的行为? 对不起,如果这不太有意义,我有点困惑。 谢谢!
编辑:
我应该澄清一下,我们不允许使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.