Tengo una clase que me gustaría usar en un scala.collection.mutable.PriorityQueue, pero no quiero que se ordene [A] solo para este propósito. No considero que el orden que deseo utilizar con respecto a PriorityQueue sea el orden natural de la clase.Scala: ¿Hay alguna manera de usar PriorityQueue como lo haría en Java?
class MyObject (sequence: Int, values: List[String]) ...
Por lo tanto, en mi Prioridad, me gustaría que los valores se ordenen por 'secuencia'. Sin embargo, solo porque dos objetos tengan la misma secuencia no los hace naturalmente iguales ya que los contenidos de sus 'valores' pueden ser diferentes.
Aquí es donde, en Java, es agradable poder proporcionar un objeto Comparator alternativo a PriorityQueue. Mi Comparador simplemente ordena los objetos con respecto a su 'secuencia' e ignora sus 'valores'.
La clase PriorityQueue tiene que parametrizar con una "A <% ordenado [A]"
class PriorityQueue[A <% Ordered[A]] extends ...
Por lo que he leído, esto significa que mi clase ha ordenado [A] o que debe proporcionar una conversión de tipo "implicit imp" a Ordenado [A], que, sinceramente, se siente poco elegante.
La solución Java parece más "funcional", lo que me permite pasar un objeto similar a la función Comparator en lugar de forzarme a una jerarquía de clases o monopatrominear mi clase.
Me doy cuenta de que hay alternativas al uso de PrioirityQueue, pero creo que puedo estar tropezando con la curva de aprendizaje de Scala aquí y no quiero rendirme sin explorar esta decisión de diseño por completo.
¿Es esta una decisión desafortunada en la biblioteca de Scala o estoy malentendiendo algún tipo de convención de llamadas que hace que PriorityQueue sea más útil y funcional?
Gracias