Scala Language Ordenar una lista


Ejemplo

Suponiendo que en la siguiente lista podemos clasificar una variedad de formas.

val names = List("Kathryn", "Allie", "Beth", "Serin", "Alana")

El comportamiento predeterminado de sorted() es usar math.Ordering , que para cadenas da como resultado una ordenación lexográfica :

names.sorted
// results in: List(Alana, Allie, Beth, Kathryn, Serin)

sortWith permite proporcionar su propio pedido utilizando una función de comparación:

names.sortWith(_.length < _.length)
// results in: List(Beth, Allie, Serin, Alana, Kathryn)

sortBy permite proporcionar una función de transformación:

//A set of vowels to use
val vowels = Set('a', 'e', 'i', 'o', 'u')

//A function that counts the vowels in a name
def countVowels(name: String) = name.count(l => vowels.contains(l.toLower))

//Sorts by the number of vowels
names.sortBy(countVowels)
//result is: List(Kathryn, Beth, Serin, Allie, Alana)

Siempre puede revertir una lista, o una lista ordenada, usando `reverse:

names.sorted.reverse
//results in: List(Serin, Kathryn, Beth, Allie, Alana)

Las listas también se pueden ordenar utilizando el método Java java.util.Arrays.sort y su envoltorio Scala scala.util.Sorting.quickSort

java.util.Arrays.sort(data)
scala.util.Sorting.quickSort(data)

Estos métodos pueden mejorar el rendimiento al ordenar colecciones más grandes si se pueden evitar las conversiones de colección y el desempaquetado / boxeo. Para una discusión más detallada sobre las diferencias de rendimiento, lea acerca de Scala Collection ordenados, sortWith y sortBy Performance .