hashSetOf în Kotlin

Creează o mulțime modificabilă: HashSet (fără ordine garantată) sau TreeSet (elemente mereu sortate).

Sintaxă
fun <T> hashSetOf(vararg elemente: T): HashSet<T>
fun <T : Comparable<T>> sortedSetOf(vararg elemente: T): TreeSet<T>   // doar JVM

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ște sortedSetOf.
  • Pui într-un sortedSetOf obiecte care nu sunt Comparable: nu compilează. Pentru ele folosește sortedSetOf(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).