Operaciones con colecciones III: Operadores plus y minus
Continuando la serie dedicada a las funciones para realizar operaciones sobre colecciones, en esta entrada vamos a ver cómo utilizar los operadores plus (+) y minus (-) para trabajar con colecciones y concretamente para realizar operaciones de adición y sustracción con ellas.
Estos operadores toman una colección como primer operando y otra colección o un elemento de una colección como segundo operando, y en base a ellos devuelven una nueva colección de solo lectura.
El operador plus devuelve como resultado una nueva colección que contiene tanto los elementos de la colección original como del segundo operando, mientras que el resultado del operador minus contiene los elementos de la colección original excepto los elementos del segundo operando (si este segundo operando es un elemento, se elimina su primera aparición en el resultado, y si se trata de una colección se eliminan todas las apariciones de sus elementos en la nueva colección resultante).
// List<Int> val intLista = listOf(1, 21, 21, 2, 6, 3, 2) println(intLista.plus(10)) // [1, 21, 21, 2, 6, 3, 2, 10] println(intLista.minus(21)) // [1, 21, 2, 6, 3, 2] println(intLista.minus(listOf(21))) // [1, 2, 6, 3, 2] println(intLista.minus(-1)) // [1, 21, 21, 2, 6, 3, 2]Podemos escribirlos directamente con los signos + y -:
// List<String> val numeros = listOf("uno", "dos", "tres", "cuatro") val plusLista = numeros + "cinco" val minusLista = numeros - listOf("tres", "cuatro") println(plusLista) // [uno, dos, tres, cuatro, cinco] println(minusLista) // [uno, dos]Volveremos a ver los operadores plus y minus cuando hablemos de las operaciones específicas de los diccionarios (Map). Por otra parte, también existen los operadores de asignación aumentada plusAssign (+=) y minusAssign (-=) para operar con la colecciones como veremos en las operaciones de escritura.
Otro ejemplo de plus y minus con colecciones:
// Set<String> val diasSemana = setOf("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo") val finesSemana = setOf("Sábado", "Domingo") val diasHabiles = diasSemana.minus(finesSemana) // diasSemana - finesSemana println(diasHabiles) // [Lunes, Martes, Miércoles, Jueves, Viernes] val diasLaborales = diasSemana.minus("Domingo") // diasSemana - "Domingo" println(diasLaborales) // [Lunes, Martes, Miércoles, Jueves, Viernes, Sábado] val diasNoLaborales = (diasSemana - diasLaborales).plus(listOf("Navidad", "Vacaciones")) // diasSemana - diasLaborales + listOf("Navidad", "Vacaciones") println(diasNoLaborales) // [Domingo, Navidad, Vacaciones]
Comentarios
Publicar un comentario