Scala: есть ли способ использовать PriorityQueue, как я бы в Java?

У меня есть класс, который я хотел бы использовать в scala.collection.mutable.PriorityQueue, но я не хочу делать его Упорядоченным [A] только для этой цели. Я не считаю упорядочение, которое я хочу использовать в отношении PriorityQueue, естественным упорядочением класса.

class MyObject (sequence: Int, values: List[String]) ...

Итак, в моем PriorityQueue я бы хотел, чтобы значения были упорядочены по «последовательности». Однако тот факт, что два объекта имеют одинаковую последовательность, не делает их естественно равными, поскольку содержимое их «значений» может быть разным.

Именно здесь в Java приятно иметь возможность предоставить альтернативный объект Comparator для PriorityQueue. Мой Comparator просто упорядочивал объекты по их «последовательности» и игнорировал их «значения».

Класс PriorityQueue должен быть параметризован с помощью «A <% Ordered [A]»

class PriorityQueue[A <% Ordered[A]] extends ... 

Из того, что я прочитал, это означает, что мой класс должен расширять Ordered [A], или я должен обеспечить преобразование типа «неявный def» в Ordered [A], что, честно говоря, выглядит не элегантно.

Решение Java кажется более «функциональным», позволяя мне передавать объект, подобный функции Comparator, вместо того, чтобы вводить меня в иерархию классов или обезличивать мой класс.

Я понимаю, что есть альтернативы использованию PrioirityQueue, но я чувствую, что могу столкнуться с кривой обучения Scala и не хочу сдаваться, не изучив полностью это решение.

Является ли это просто неудачным решением в библиотеке Scala, или я неправильно понимаю какое-то соглашение о вызовах, которое делает PriorityQueue более удобным и функциональным?

Спасибо

Ответы на вопрос(4)

Ваш ответ на вопрос