Eliminar elemento repetido de una lista en Kotlin
Las listas en Kotlin son objetos contenedores que pueden almacenar un número variado de valores de un mismo tipo, poseen un tamaño dinámico que les permite expandirse o reducirse cuando se añade o se elimina un elemento.
Descripción del tema: dada una lista de números, algunos repetidos, se le pregunta al usuario cuál desea eliminar y el programa debe eliminar todos los elementos de la lista que sean igual al número ingresado por el usuario. El programa debe mostrar en pantalla primero la lista actual con los elementos que posee.
Código fuente
fun main(args: Array<String>) { val list = mutableListOf<Int>(2, 90, 89, 2, 5, 101, 90, 35, 2, 43, 89, 101, 5, 89, 90) val item: Int println("Lista actual: $arrs") print("\n¿Que elemento desea eliminar?: ") item = readLine().toString().toInt() if(list.removeAll { it == item }) { println("Lista modificada: ${list}") } else { println("El elemento no existe!!") } }
Kotlin requiere obligatoriamente una función principal llamada main(), como en C++, Go y Java, y es la única función que es ejecutada cuando se ejecuta el programa. Todo lo que se encuentre en su interior será ejecutado, incluyendo llamadas a otras funciones e instancias de objetos.
Creando lista
Creamos una lista mutable con varios elementos de tipo Int, casi todos repetidos.
val list = mutableListOf(2, 90, 89, 2, 5, 101, 90, 35, 2, 43, 89, 101, 5, 89, 90)
Para crear listas mutables solo es necesario llamar a mutableListOf<Int>(), el tipo lista es opcional, solo si se puede inferir desde el contexto.
Creando variable
val item: Int
Creamos la variable que almacenará el valor del item ingresado por el usuario, es de tipo Int.
Mostrando lista actual
println("Lista actual: $list")
Mostramos al usuario los elementos que tiene la lista actual, usando interpolación con la expresión $list.
Solicitando y leyendo el elemento a eliminar
El programa primero le solicita al usuario que ingrese el elemento que desea eliminar y luego lo lee.
print("\n¿Que elemento desea eliminar?: ") item = readLine().toString().toInt()
Leemos el elemento ingresado usando la función readLine(), pero hay que convertirlo a String usando el método .toString() y luego a Int usando el método .toInt(); por último, se asigna a la variable item.
Eliminando el elemento y mostrando el resultado
Este fragmento de código nos garantiza 2 cosas seguras:
- Verifica que el elemento exista y sea eliminado con éxito.
- Si el elemento no existe entonces nos lo informa.
if(arrs.removeAll { it == item }) { println("Lista modificada: ${arrs}") } else { println("El elemento no existe!!") }
El método removeAll {...}
compara cada elemento de la lista almacenado en la variable it con el valor de item usando la expresión booleana it == item
y los elimina si coinciden. Este método devuelve true si los elementos han sido eliminados y nos muestra la lista modificada sin los elementos eliminados o false si no ha sido encontrado y nos informa que el elemento no existe.
Ejecutando el programa
Al ejecutar nuestro programa, nos muestra lo siguiente:
[fixedtorres@linuxero]$ kotlinc -include-runtime EliminarElementoDeUnaLista.kt -d EliminarElementoDeUnaLista.jar [fixedtorres@linuxero]$ kotlin EliminarElementoDeUnaLista.jar Lista actual: [2, 90, 89, 2, 5, 101, 90, 35, 2, 43, 89, 101, 5, 89, 90] ¿Que elemento desea eliminar?: 90 Lista modificada: [2, 89, 2, 5, 101, 35, 2, 43, 89, 101, 5, 89] [fixedtorres@linuxero]
Nos muestra la lista actual, solicita que ingresemos el elemento que deseamos eliminar y nos devuelve la lista sin el elemento que ingresamos, y si hay repetidos, los elimina. En este caso se elimina el 90 que se repite 3 veces.
Si desea saber más sobre cómo compilar y ejecutar aplicaciones desde la línea de comandos, ingrese a este link.