tutorial recorrer listas lista introduccion funciones ejemplos comentarios comentar scala sortedset

recorrer - scala ejemplos



Convertir la lista de entradas en un conjunto ordenado en Scala (4)

Si tengo una lista de caracteres como:

val myList = List(3,2,1,9)

¿Cuál es la forma correcta / preferida de crear un Conjunto de Ordenamiento a partir de una Lista o Secuencia de Ints, donde los elementos se ordenan de menor a mayor?

Si me hubieras puesto un arma en la cabeza, habría dicho:

val itsSorted = collection.SortedSet(myList)

pero recibo un error en cuanto a que no hay un orden implícito definido para la Lista [Int].


Esto es especialmente útil si tienes que mapear de todos modos:

import scala.collection.breakOut val s: collection.SortedSet[Int] = List(1,2,3,4).map(identity)(breakOut) //--> s: scala.collection.SortedSet[Int] = TreeSet(1, 2, 3, 4)



También puede aprovechar la instancia de CanBuildFrom y hacer esto:

val myList = List(3,2,1,9) myList.to[SortedSet] // scala.collection.immutable.SortedSet[Int] = TreeSet(1, 2, 3, 9)


Utilizar:

collection.SortedSet(myList: _*)

De la forma en que lo SortedSet[List[Int]] , el compilador piensa que quieres crear un SortedSet[List[Int]] no un SortedSet[Int] . Es por eso que se queja de que no haya un pedido implícito para la List[Int] .

Observe el parámetro repetido de tipo A* en la firma del método:

def apply [A] (elems: A*)(implicit ord: Ordering[A]): SortedSet[A]

Para tratar myList como un argumento de secuencia de A use, la anotación de tipo _* .