Sobes.tech
Junior — Middle

Jakie dostępne są sposoby implementacji interfejsu Set w Kotlinie i czym się różnią?

sobes.tech AI

Odpowiedź od AI

W Kotlinie interfejs Set jest implementowany na kilka sposobów, które różnią się pod względem mutowalności i wewnętrznej implementacji:

  • Set — to interfejs dla niemutowalnego zbioru (tylko do odczytu). Zapewnia operacje odczytu, ale nie do modyfikacji.
  • MutableSet — rozszerza Set i dodaje metody do modyfikacji zbioru (dodawanie, usuwanie elementów).

Implementacje:

  • HashSet — oparty na tablicy haszującej, zapewnia szybki dostęp i operacje dodawania/usuwania. Kolejność elementów nie jest gwarantowana.
  • LinkedHashSet — dziedziczy po HashSet, zachowuje kolejność wstawiania elementów.
  • SortedSet / TreeSet (przez Java) — zbiór, którego elementy są posortowane według naturalnego porządku lub komparatora.

Przykład:

val readOnlySet: Set<Int> = setOf(1, 2, 3)
val mutableSet: MutableSet<Int> = mutableSetOf(1, 2, 3)

mutableSet.add(4) // dozwolone
// readOnlySet.add(4) // błąd kompilacji

W związku z tym wybór implementacji zależy od wymagań dotyczących mutowalności i kolejności elementów.