No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Como ordenar listas con las funciones que tiene Kotlin

22/37
Recursos

Aportes 20

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Vale la pena comentar que también podemos encadenar los métodos que nos dan las lista, como ejemplo:

val listaDeStringDeNumeros = numerosDeLoteria.filter { num -> num > 50 }.map{num -> "numero: $num"}

Lo que nos entrega una lista de Strings de numeros mayores de 50, por si quieren ahorrarse código.




En expresiones lambda se puede usar “it”

tanto para mutable como para inmutable: lo que éstas funciones están haciendo en realidad es, devolver una nueva lista con las propiedades de la función que se aplica.
sorted() = ordena de menor a mayor
sortedDescending() = ordena de mayor a menor
sortedBy{condicion} = ordena segun la condicion que se pasa de parametro
suffled() = desordena la lista
reversed() = invierte el orden de la lista original
map{ algoritmo } = ejecuta un algoritmo para cada elemento
filter { condicion } = devuelve una nueva lista con los elementos que cumplen la condicion

<fun main(args: Array<String>) {
    val numerosDeLoteria = listOf(11,22,43,56,78,66)

    val numerosSorted = numerosDeLoteria.sorted()
    println(numerosSorted)

    val numerosDeLoteriaDescendientes = numerosDeLoteria.sortedDescending()
    println(numerosDeLoteriaDescendientes)

    val ordenarPorMultiplos = numerosDeLoteria.sortedBy { numero -> numero < 50 }
    println(ordenarPorMultiplos)

    val numerosAleatorios = numerosDeLoteria.shuffled()
    println(numerosAleatorios)

    val numerosDeReversa = numerosDeLoteria.reversed()
    println(numerosDeReversa)

    val mensajesDeNumeros = numerosDeLoteria.map { numero -> "Tu numero de loteria es $numero"}
    println(mensajesDeNumeros)

    val numerosFiltrados = numerosDeLoteria.filter {numero -> numero > 50}
    println(numerosFiltrados)
}> 

que buena clase vetri! ❤️ super util para que nuestros algoritmos queden chidos!

en vez de meterlo en variable directamente lo puedes imprimir usando el println y su desarrollo```js println("los numeros de loteria mayor a 50 son ${numerosDeLoteria.filter { numero -> numero > 100 }}") ```
No estaría demás indicar que sortedBy{numero -> numero<50 } En realidad el orden lo realiza porque devuelve true o false en cada iteración, entonces ordena a través de lo que vale true(1) y false(0)

Code desarrolado en la clase:

fun main(args: Array<String>) {
   val lotteryNumbers = listOf(11,22,43,56,78,66)

    val sortedNumbers = lotteryNumbers.sorted()
    println(sortedNumbers)

    val descendantLotteryNumbers = lotteryNumbers.sortedDescending()
    println(descendantLotteryNumbers)

    val sortByMultiples = lotteryNumbers.sortedBy {
        number -> number < 50
    }
    println(sortByMultiples)

    val randomNumbers = lotteryNumbers.shuffled()
    println(randomNumbers)

    val reverseNumbers = lotteryNumbers.reversed()
    println(reverseNumbers)

    val numbersMessage = lotteryNumbers.map {
        number -> "Your lottery number is, $number!"
    }
    println(numbersMessage)

    val filteredNumbers = lotteryNumbers.filter {
        number -> number > 50
    }
    println(filteredNumbers)
}

Para los que venimos de Javascript es sencillo de comprender estos tópicos, sería interesante profundizar más para aquellos que lo ven por primera vez debido a la complejidad del tema

Pero la lista `numerosDeLoteria` es inmutable, lo que éstas funciones están haciendo en realidad es, devolver una nueva lista con las propiedades de la función que se aplica.

Me da vergüenza ajena ver este curso, lleno de errores conceptuales…

Creo que Platzi debiera editar los videos, para al menos corregir los errores más graves (sobre todo los errores conceptuales)

![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-06-22%20a%20la%28s%29%205.49.06%E2%80%AFp.%C2%A0m.-168921e9-273b-4513-b7d6-41f4613b23a2.jpg)No creo ser el único que se dio cuenta de esto…. pero fíjense que en el ejemplo del reversed() debe dar como resultado la lista inversa a la de numerosDeLoteria, pero el orden está mal…. la lista de números básica es \[11, 22, 43, 56, 66, 78] y la inversa debería de ser \[78, 66, 56, 43, 22, 11] pero en vez de eso, en la consola le está dando erróneamente el resultado de los primeros dos elementos ==> \[66, 78, 56, 43, 22, 11], díganme si hay algún error conceptual o algo por el estilo que no estoy logrando captar por favor... (esto sucede en el minuto 7:00)
Ejemplo básico de como filtrar números impares y pares de una lista con la función filter: ![](https://static.platzi.com/media/user_upload/image-99e59a0d-747e-4219-8319-f78e7b3b64e1.jpg)

Trabaja similar a los streams de java correspondientes a la programación funcional

fun main(args: Array<String>) {
    // sort lists
    val lottery = listOf(11,2,44,33,56,78,66)
    val sorted = lottery.sorted()
    val sortedDescending = lottery.sortedDescending()
    val sortedMultiples = lottery.sortedBy { num -> num < 50 }
    val randomNumbers = lottery.shuffled()
    val reverseLottery = lottery.reversed()
    val lotteryMapped = lottery.map { num -> num % 2 == 0 }
    val lotteryFiltered = lottery.filter { num -> num % 2 == 0 }
    val lotteryListNumbers = lottery.filter { num -> num % 2 == 0 }.map { num -> "number = $num" }

    println("original numbers $lottery \n" +
            "sorted ascending $sorted \n" +
            "sorted descending $sortedDescending \n" +
            "sorted multiples $sortedMultiples \n" +
            "random numbers $randomNumbers \n" +
            "reversed numbers $reverseLottery \n" +
            "Mapped numbers $lotteryMapped \n" +
            "Filtered numbers $lotteryFiltered \n" +
            "Filtered and mapped numbers $lotteryListNumbers \n")
}
println("Ordenar listas")
    //Ordenar listas
    val numerosDeLoteria = listOf(11, 22, 43, 56, 78, 66)

    //Ordenar ascendentemente con sorted
    val numerosAscendentes = numerosDeLoteria.sorted()
    println(numerosAscendentes)

    //Ordenar descendentemente con sortedDescending
    val numerosDescendentes = numerosDeLoteria.sortedDescending()
    println(numerosDescendentes)

    //Ordenar dependiendo de una condición con sortedBy
    val ordenarPorMultiplos = numerosDeLoteria.sortedBy { numero -> numero < 50 }
    println(ordenarPorMultiplos)

    //Ordenar de forma aleatoria
    val numerosAleatorios = numerosDeLoteria.shuffled()
    println(numerosAleatorios)

    //Ordenar de forma inversa
    val numerosEnReversa = numerosDeLoteria.reversed()
    println(numerosEnReversa)

    //Funciones de programación funcional

    //Map - Convertir un elemento de un tipo a otro tipo
    val mensajesDeNumeros = numerosDeLoteria.map { numero -> println(numero) ; "Tu número de lotería es  $numero" }
    println(mensajesDeNumeros)

    //Filtrar elementos dependiendo de condiciones con filter
    val numerosFiltrados = numerosDeLoteria.filter { numero -> numero > 50 }
    println(numerosFiltrados)


¿Cuál es la diferencia entre .reverse() y .descending()?

<val lista = listOf(1,4,5,7,8)

    var listaMenorMayor= lista.sorted()
    println("lista de menor a mayor = $listaMenorMayor")

    var listaMayorMenor= lista.sortedDescending()
    println("lista de mayor a menor = $listaMayorMenor")

    //ordenar por una condicion
    var listaCondicion = lista.sortedBy { numero-> numero< 3 }
    println("lista con condicion = $listaCondicion")


    var numerosAleatorios = lista.shuffled()
    println("lista aleatoria = $numerosAleatorios")

    var numerosReversa = lista.reversed()
    println("lista en reversa = $numerosReversa")

    var numeroFiltrado = lista.filter { numero -> numero >3 }
    println("Numero filtrado = $numeroFiltrado")> 
val lotteryNumbers = listOf(11,22,43,56,78,66)

    val sortedNumbers = lotteryNumbers.sorted()
    println(sortedNumbers)

    val descendantLotteryNumbers = lotteryNumbers.sortedDescending()
    println(descendantLotteryNumbers)

    val sortByMultiples = lotteryNumbers.sortedBy {
        number -> number < 50
    }
    println(sortByMultiples)

    val randomNumbers = lotteryNumbers.shuffled()
    println(randomNumbers)

    val reverseNumbers = lotteryNumbers.reversed()
    println(reverseNumbers)

    val numbersMessage = lotteryNumbers.map {
        number -> "Your lottery number is, $number!"
    }
    println(numbersMessage)

    val filteredNumbers = lotteryNumbers.filter {
        number -> number > 50
    }
    println(filteredNumbers)