Red de conocimiento informático - Material del sitio web - Cómo ordenar una colección en Scala

Cómo ordenar una colección en Scala

A continuación se muestra una serie de ejemplos de clasificación

Listas y matrices en Scala

La estructura de datos se define de la siguiente manera:

// Estructura de datos utilizada

val s = Lista( "a", "d", "F", "B", "e" )

val n = Lista(3, 7, 2, 1, 5)

p>

val m = Mapa(

-2 -> 5,

2 ->6,

5 -> 9,

p>

1 -> 2,

0 -> -16,

- 1 -> -4 1 -> -4

)

Ordenar usando el método de clasificación integrado de Scala

s.s.sorted

res0: Lista = Lista(B, F, a , d, e)

n.sorted

res1: Lista[Int] = Lista(1, 2, 3, 5, 7)

¿Por qué no ¿No nos clasificamos aquí? ¡Esto se debe a que el objeto del mapa no tiene método de clasificación!

Búsqueda que distingue entre mayúsculas y minúsculas

Podemos usar sortWith en Scala para personalizar la función de clasificación que distingue entre mayúsculas y minúsculas.

toLowerCase < e2.toLowerCase)

s.sortWith( compfn1)

res2: Lista = Lista(a, B, d, e, F)

s .sortWith(compfn2)

res3: List = List(a, B, d, e, F)

/* O puedes usar la función anónima (gracias Rahul) */

s.sortWith(_.toLowerCase < _.toLowerCase)

res4: Lista = Lista(a, B, d, e, F)

Cómo Ordenar por claves o valores de mapa

De hecho, el código es muy simple, como se muestra a continuación:

//Puedes usar sorted para ordenar por clave

m.toList.SortWith( _.LowerCase < _.LowerCase.SortWith)

S.sortWith(_.LowerCase < _.LowerCase.SortWith)ordenado para cada {

caso (clave , valor) =>

println(clave + " = " + valor)

}

-2 = 5

-1 = -4

0 = -16

1 = 2

2 = 6

5 = 9

// Ordenar por valor

m.toList.sortBy(_._2) foreach {

case (clave, valor) =>

println( clave + " = " + valor)

}

0 = -16

-1 = -4

1 = 2

-2 = 5

2 = 6

5 = 9

Ordenar los datos de origen

Lo anterior la clasificación no afectará los datos originales, el resultado de la clasificación se almacena en otra variable:

scala> val a = Array(2,6,1,9,3,2,1,-23)

a: Matriz[Int] = Matriz(2, 6, 1, 9, 3, 2, 1, -23)

scala> scala.util.Sorting.quickSort(a)

scala> a.mkString("," )

res24: Cadena = -23,1,1,2,2,3,6,9

Como puede ver, una matriz Los datos han sido ordenados.

Si se ordena la n anterior, se informa el siguiente error:

scala> scala.util.Sorting.QuickSort(n)res35: Array[Int] = Array(1, 2, 3, 5, 7 )

Al ordenar la matriz se obtendrá Unit

scala> val a = Array(2,6,1,9,3,2,1,-23)

a:Array[Int] = Array(2, 6, 1, 9, 3, 2, 1, -23)

scala>scala.util.Sorting.stableSort(a)

scala>a.mkString(",")

res39: Cadena = -23,1,1,2,2,3,6,9