Настройка компаратора при создании экземпляра для параметризованного связанного списка

Я работаю над сортированным домашним заданием по связанному списку и не понимаю, как настроить компаратор. Я написал класс связанного списка, который параметризован для принятия любого класса. Связанный список работает нормально, но я не уверен, как установить компаратор для списка, потому что он параметризован. Должен ли я сначала создать класс компаратора и передать его конструктору? Компаратор будет использоваться для поддержания порядка в списке. Или мне нужно, чтобы внутри класса, который я установил, была переменная, которая изменяет поведение компаратора, определенного в классе связанного списка? Извините, если это не имеет особого смысла, так как я немного запутался. Спасибо!

РЕДАКТИРОВАТЬ:

Я должен был уточнить, нам не разрешено использовать Linked List из библиотеки коллекций Java, мы разрабатываем свои собственные (да, я знаю, что я бы не стал этого делать на практике, но это изгнание с домашней работой). Мой класс Linked List выглядит примерно так:

public class LinkedList<T> implements Iterable<T> {
    private LinkedListNode<T> head = null;
    private int size = 0;
        .
        .
        .
        //various methods for retrieving size, iterator etc...
}

После вставки элемента его следует поместить в правильное место. Моя идея состоит в том, чтобы определить это с помощью компаратора, который передается при создании экземпляра объекта Linked List. Может быть, что-то вроде этого:

LinkedList<MyClass> myList(MyClass.myComparator);

Моя проблема заключается в том, что мне нужно иметь несколько компараторов для одного и того же класса (MyClass), которые используются в течение всего времени существования объекта. Я также запутался, как установить компаратор в Linked List после его передачи.

1 ответ

Решение

LinkedList не является отсортированной коллекцией, поэтому вы не можете передать ее Comparator во время создания. Заметьте, что ни один из его конструкторов не принимает Comparator,

Вместо этого вы должны построить его и добавить к нему, а затем использовать

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

Вы можете написать Comparator параметризованного типа T со следующим синтаксисом.

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

Очевидно, вы хотите заменить T выше с именем вашего типа.

Другие вопросы по тегам