Ce face Iterable.toSet
toSet() pune elementele într-un Set: fiecare valoare apare o singură dată. Ordinea primei apariții se păstrează (în spate este un LinkedHashSet). Verificarea x in set este foarte rapidă, mult mai rapidă decât într-o listă mare.
toMutableSet() dă o mulțime modificabilă, în care poți adăuga sau scoate elemente. toSortedSet() (doar pe JVM) dă o mulțime ordonată crescător, care rămâne sortată și după ce adaugi elemente noi.
Ce returnează
Un Set<T>, MutableSet<T> sau SortedSet<T> nou.
Exemple
Exemplul 1: Etichete unice
Duplicatele dispar, iar ordinea rămâne cea a primei apariții.
fun main() {
val etichete = listOf("kotlin", "java", "kotlin", "android", "java")
val unice = etichete.toSet()
println(unice)
println("android" in unice)
}
Rezultat
[kotlin, java, android]
true
Exemplul 2: Mulțime modificabilă
add întoarce false dacă elementul exista deja, deci putem afla dacă orașul este nou.
fun main() {
val vizitate = listOf("Iași", "Cluj").toMutableSet()
println(vizitate.add("Sibiu"))
println(vizitate.add("Iași"))
println(vizitate)
}
Rezultat
true
false
[Iași, Cluj, Sibiu]
Exemplul 3: toSortedSet rămâne sortat
Notele distincte apar în ordine crescătoare. După add(5), noul element își găsește singur locul.
fun main() {
val note = listOf(9, 7, 10, 7, 9, 8)
val distincte = note.toSortedSet()
println(distincte)
distincte.add(5)
println(distincte)
println("Cea mai mică: ${distincte.first()}")
}
Rezultat
[7, 8, 9, 10]
[5, 7, 8, 9, 10]
Cea mai mică: 5
Greșeli frecvente
- Cauți des în liste mari cu
x in lista: fiecare căutare parcurge lista. Transformă o dată lista în set. - Te aștepți ca
toSet()să sorteze: păstrează ordinea primei apariții. Pentru ordine foloseștetoSortedSet()sausorted().
Comenzi înrudite
Iterable.distinct: Elimină duplicatele și întoarce o listă cu fiecare element o singură dată, în ordinea primei apariții.setOf: Creează o mulțime: o colecție fără duplicate, în care verifici rapid dacă un element există.Iterable.union: Operații pe mulțimi: union (reuniunea), intersect (elementele comune) și subtract (diferența); rezultatul e un Set.Iterable.toList: Copiază elementele într-o listă nouă: toList dă o listă doar pentru citire, toMutableList una modificabilă.hashSetOf: Creează o mulțime modificabilă: HashSet (fără ordine garantată) sau TreeSet (elemente mereu sortate).