1

我正在做一个排序的链接列表作业并且对设置比较器感到困惑。我编写了一个链表类,它被参数化以接受任何类。链接列表工作正常,但我对如何为列表设置比较器感到困惑,因为它是参数化的。我是否首先创建一个比较器类并将其传递给构造函数?比较器将用于维护列表的顺序。或者我是否需要在我设置的类中有一个变量来改变链接列表类中定义的比较器的行为?对不起,如果这没有多大意义,因为我有点困惑。谢谢!

编辑:

我应该澄清一下,我们不允许使用 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 中设置比较器感到困惑。

4

1 回答 1

0

LinkedList不是一个排序的集合,所以你不能在构造过程中将它传递给 Comparator。请注意,它的构造函数都没有使用Comparator.

相反,您将构建它并添加到它,然后使用

Collections.sort(myList, new MyComparator());

您可以使用以下语法编写Comparator参数化类型的 a 。T

public class MyComparator implements Comparator<T>() {
      public int compare (T a, T b) {
          // Put comparison logic here.
      }
}

显然,您想T用您的类型的名称替换上面的内容。

于 2014-04-17T03:06:24.853 回答