Ce face setOf
Un Set (mulțime) ține fiecare valoare o singură dată. Dacă dai aceeași valoare de mai multe ori, rămâne o singură copie. Operația principală este verificarea apartenenței: x in multime.
setOf creează o mulțime doar pentru citire, mutableSetOf una cu add și remove. Ambele păstrează ordinea primei inserări (pe JVM sunt LinkedHashSet). add întoarce true dacă elementul era nou și false dacă exista deja.
O mulțime nu are poziții: nu poți scrie multime[0]. Dacă ai nevoie de ordine și de acces după poziție, transformă mulțimea în listă cu toList().
Parametri
| Parametru | Descriere |
|---|---|
elemente |
Valorile inițiale; duplicatele sunt ignorate. |
Ce returnează
Set<T> sau MutableSet<T> cu valorile unice, în ordinea primei apariții.
Exemple
Exemplul 1: Duplicatele dispar
„Iași” apare de două ori, dar mulțimea îl ține o singură dată.
fun main() {
val orase = setOf("Iași", "Cluj", "Iași", "Timișoara")
println(orase)
println("Câte orașe distincte: ${orase.size}")
println("Avem Cluj? ${"Cluj" in orase}")
println("Avem Arad? ${"Arad" in orase}")
}
Rezultat
[Iași, Cluj, Timișoara]
Câte orașe distincte: 3
Avem Cluj? true
Avem Arad? false
Exemplul 2: Vizitatori unici cu mutableSetOf
add spune dacă vizitatorul este nou. Așa numărăm vizitatorii unici dintr-un jurnal.
fun main() {
val jurnal = listOf("ana", "ion", "ana", "maria", "ion", "ana")
val unici = mutableSetOf<String>()
for (utilizator in jurnal) {
val nou = unici.add(utilizator)
println("$utilizator ${if (nou) "(nou)" else "(revenit)"}")
}
println("Vizitatori unici: $unici")
}
Rezultat
ana (nou)
ion (nou)
ana (revenit)
maria (nou)
ion (revenit)
ana (revenit)
Vizitatori unici: [ana, ion, maria]
Greșeli frecvente
- Încerci
multime[0]: unSetnu are acces după poziție. Foloseștefirst()sautoList()[0]. - Pui în mulțime obiecte ale unei clase obișnuite (nu
data class): două obiecte cu aceleași câmpuri sunt considerate diferite, pentru că nu auequals/hashCodescrise.
Comenzi înrudite
hashSetOf: Creează o mulțime modificabilă: HashSet (fără ordine garantată) sau TreeSet (elemente mereu sortate).Iterable.union: Operații pe mulțimi: union (reuniunea), intersect (elementele comune) și subtract (diferența); rezultatul e un Set.Iterable.toSet: Transformă colecția într-o mulțime (fără duplicate): toSet, toMutableSet sau toSortedSet (sortată).Iterable.distinct: Elimină duplicatele și întoarce o listă cu fiecare element o singură dată, în ordinea primei apariții.Iterable.contains: contains (operatorul in) verifică dacă un element există; indexOf dă poziția primei apariții sau -1.