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.