Ce face hashSetOf
hashSetOf creează un HashSet: verificarea și adăugarea sunt foarte rapide, dar ordinea elementelor la parcurgere nu este garantată. Folosește-l când te interesează doar „există sau nu”.
sortedSetOf creează un java.util.TreeSet: elementele sunt ținute sortate crescător tot timpul. Are și funcții utile pentru ordine: first(), last(), ceiling(x) (cel mai mic element ≥ x), floor(x). Există doar pe JVM.
Ambele mulțimi sunt modificabile (au add și remove). Dacă vrei ordinea de inserare, folosește mutableSetOf.
Parametri
| Parametru | Descriere |
|---|---|
elemente |
Valorile inițiale; duplicatele sunt ignorate. |
Ce returnează
HashSet<T> sau TreeSet<T>.
Exemple
Exemplul 1: Note distincte, sortate automat
TreeSet elimină duplicatele și sortează. Adăugarea lui 4 îl pune direct pe primul loc.
fun main() {
val note = sortedSetOf(9, 7, 10, 7, 9, 8)
println(note)
note.add(4)
println(note)
println("Cea mai mică: ${note.first()}, cea mai mare: ${note.last()}")
println("Cea mai mică notă de cel puțin 9: ${note.ceiling(9)}")
}
Rezultat
[7, 8, 9, 10]
[4, 7, 8, 9, 10]
Cea mai mică: 4, cea mai mare: 10
Cea mai mică notă de cel puțin 9: 9
Exemplul 2: HashSet pentru verificări rapide
Ținem codurile de reducere valide într-un HashSet. Ordinea nu contează, contează doar in.
fun main() {
val coduriValide = hashSetOf("TOAMNA10", "STUDENT15", "BLACK30")
val incercari = listOf("student15", "STUDENT15", "VARA5")
for (cod in incercari) {
val ok = cod in coduriValide
println("$cod: ${if (ok) "acceptat" else "respins"}")
}
println("Coduri: ${coduriValide.size}")
}
Rezultat
student15: respins
STUDENT15: acceptat
VARA5: respins
Coduri: 3
Greșeli frecvente
- Afișezi un
HashSetși te bazezi pe ordinea văzută. Ordinea depinde de codurile hash și nu este promisă; sortează (sorted()) sau foloseștesortedSetOf. - Pui într-un
sortedSetOfobiecte care nu suntComparable: nu compilează. Pentru ele foloseștesortedSetOf(comparator, ...).
Comenzi înrudite
setOf: Creează o mulțime: o colecție fără duplicate, în care verifici rapid dacă un element există.hashMapOf: Creează un map modificabil de un tip anume: HashMap (fără ordine), LinkedHashMap (ordinea inserării) sau SortedMap (chei sortate).Iterable.toSet: Transformă colecția într-o mulțime (fără duplicate): toSet, toMutableSet sau toSortedSet (sortată).Iterable.sorted: Întoarce o listă nouă cu elementele în ordine crescătoare (sorted) sau descrescătoare (sortedDescending).