Iterable.union în Kotlin

Operații pe mulțimi: union (reuniunea), intersect (elementele comune) și subtract (diferența); rezultatul e un Set.

Sintaxă
infix fun <T> Iterable<T>.union(alta: Iterable<T>): Set<T>
infix fun <T> Iterable<T>.intersect(alta: Iterable<T>): Set<T>
infix fun <T> Iterable<T>.subtract(alta: Iterable<T>): Set<T>

Ce face Iterable.union

a union b conține toate elementele din a și din b, fiecare o singură dată. a intersect b conține doar elementele care sunt în ambele. a subtract b conține elementele din a care nu sunt în b.

Toate trei se pot scrie infix (fără punct și paranteze) și întorc un Set, deci fără duplicate. Ordinea urmează prima colecție (apoi elementele noi din a doua, la union).

Parametri

Parametru Descriere
alta A doua colecție.

Ce returnează

Un Set<T> nou.

Exemple

Exemplul 1: Cursuri alese de doi studenți

Reuniunea arată toate cursurile, intersecția pe cele comune, iar diferența ce are Ana în plus față de Ion.

fun main() {
    val ana = listOf("Matematică", "Fizică", "Engleză")
    val ion = listOf("Engleză", "Istorie", "Matematică")

    println("Toate: ${ana union ion}")
    println("Comune: ${ana intersect ion}")
    println("Doar Ana: ${ana subtract ion}")
}

Rezultat

Toate: [Matematică, Fizică, Engleză, Istorie]
Comune: [Matematică, Engleză]
Doar Ana: [Fizică]

Exemplul 2: Duplicatele dispar

Chiar dacă listele au valori repetate, rezultatul este o mulțime.

fun main() {
    val luni = listOf(1, 2, 2, 3)
    val marti = listOf(3, 3, 4)
    println(luni.union(marti))
    println(luni.intersect(marti))
}

Rezultat

[1, 2, 3, 4]
[3]

Greșeli frecvente

  • Folosești union când vrei să păstrezi duplicatele: rezultatul este un set. Pentru o lipire simplă folosește +.
  • Confunzi subtract cu minus: subtract întoarce un Set (fără duplicate), minus o listă.

Comenzi înrudite

  • Iterable.toSet: Transformă colecția într-o mulțime (fără duplicate): toSet, toMutableSet sau toSortedSet (sortată).
  • Iterable.plus: Operatorii + și – pe colecții: creează o listă nouă cu elemente adăugate sau scoase, fără să schimbe originalul.
  • setOf: Creează o mulțime: o colecție fără duplicate, în care verifici rapid dacă un element există.
  • Iterable.distinct: Elimină duplicatele și întoarce o listă cu fiecare element o singură dată, în ordinea primei apariții.