У меня есть класс, который я хотел бы использовать в scala.collection.mutable.PriorityQueue, но я не хочу, чтобы он был упорядочен [A] только для этой цели. Я не рассматриваю порядок, который я хочу использовать в отношении PriorityQueue, как естественный порядок класса.Scala: Есть ли способ использовать PriorityQueue, как в Java?
class MyObject (sequence: Int, values: List[String]) ...
Итак, в моем PriorityQueue я хотел бы, чтобы значения упорядочивались по 'sequence'. Однако только потому, что два объекта имеют одну и ту же последовательность, они не делают их естественными, так как содержание их «значений» может быть различным.
Здесь, на Java, приятно иметь альтернативный объект Comparator для PriorityQueue. Мой компаратор просто заказывал объекты в отношении их «последовательности» и игнорировал их «значения».
PriorityQueue класс должен быть параметризованы с «A <% упорядоченном [A]»
class PriorityQueue[A <% Ordered[A]] extends ...
Из того, что я читал, это означает, что мой класс должен расширять Заказанный [A] или я должен предоставить «implicit def» type to Ordered [A], который, честно говоря, чувствует себя неэлегантным.
Решение Java кажется более «функциональным», что позволяет мне передавать объект-объект Comparator вместо того, чтобы вставлять меня в иерархию классов или monkeypatching моего класса.
Я понимаю, что есть альтернативы использованию PrioirityQueue, но я чувствую, что я могу столкнуться с кривой обучения Scala здесь и не хочу сдаваться без полного изучения этого дизайнерского решения.
Это просто неудачное решение в библиотеке Scala, или я не понимаю какое-то соглашение о вызове, которое делает PriorityQueue более полезным и «функциональным»?
Благодаря