繁体   English   中英

在参数化链表的实例化上设置比较器

[英]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());

您可以使用以下语法编写一个参数化类型TComparator

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM