Jason. Cała informatyka w jednym miejscu!

Pogadanki o kolekcjach czas zacząć! Przyjrzymy się teraz zbiorowi, kolejnej ze struktur danych jakie poznamy. Zobaczymy jak to się je w Kotlinie. "setOf" w języku Kotlin bez owijania w bawełnę!

"SETOF" W JĘZYKU KOTLIN DO TWORZENIA TYM RAZEM ZBIORÓW!

Ponownie skieruję Was bezpośrednio do odpowiedniego artykułu po szczegóły dotyczące tego samego z perspektywy Javy, a opowiem tylko o części obowiązującej w Kotlinie. Zbiór to struktura danych której jej głównym zadaniem jest niedopuszczenie do pojawiania się duplikatów. Drugą ważną cechą jest niezachowywanie kolejności dodawanych elementów. Nazywa się to wówczas "kolekcją nieuporządkowaną".

TWORZENIE INSTANCJI ZBIORU

Zakładam, że już wiecie jak potoczy się ten artykuł. Patrząc na praktykę, zbiór tworzy się nie inaczej jak wywołując metodę "setOf" w języku Kotlin i przypisując referencję do zmiennej:

val names = setOf("Jacek", "Maciek", "Tomasz")

Sprawdźcie sami jaki będzie efekt jak jeden z elementów będzie się powtarzał:

val names = setOf("Jacek", "Maciek", "Tomasz", "Maciek")

Trzy z czterech elementów zostanie osadzonych do zbioru. Ze względu na "bycie" duplikatem, ostatni łańcuch znaków nie wejdzie do kolekcji. A typ jaki zostanie nadany przez kompilator, to "Set<String>":

val names: Set<String> = setOf("Jacek", "Maciek", "Tomasz", "Maciek")

Jeżeli w tej samej linijce kodu przypisujemy wartości konkretnego typu, to kompilator nas "zwolni" z manualnego nadawania typu. "setOf" w języku Kotlin nie jest wyjątkiem.

ZESTAW PRZYKŁADOWYCH METOD ZBIORU NIEMODYFIKOWALNEGO

Chcecie wiedzieć do czego jest zdolny zbiór niemodyfikowalny? Ściągnijcie swój wzrok nieco niżej.

CONTAINS

Sprawdzenie czy zbiór "zawiera" dany element wykonuje się bardzo prosto poprzez metodę "contains". Zwraca wartość boolowską (prawda / fałsz) w zależności od tego, czy udało się znaleźć wskazany element odpowiedniego typu, jaki podajemy jako pierwszy parametr.

println(names.contains("Jacek"))
SORTED

Metoda "sorted" działa identycznie jak to "sorted", które mieliście okazję widzieć podczas tłumaczenia list niemodyfikowalnych. Zwraca nową kopię zbioru tylko z posortowanymi elementami w środku:

println(names.sorted())
REVERSED

Tutaj ta sama sytuacja. Metoda "reversed" zwraca nową kopię zbioru z odwróconą kolejnością argumentów jakie wprowadziliśmy podczas inicjalizacji. Akurat przy "setOf" w języku Kotlin zostanie zachowana kolejność, aczkolwiek przy zbiorze modyfikowalnym może być różnie.

println(names.reversed())

"RÓWNOŚĆ" ZBIORÓW

Sprawa nieco łatwiejsza do zapamiętania niż w przypadku list. Aby się zorientować czy dwa zbiory są sobie równe, wystarczy wiedzieć że muszą mieć w sobie te same argumenty. Kolejność nie ma znaczenia, bo nie może mieć znaczenia skoro jest to kolekcja nieuporządkowana. W takiej sytuacji, to:

val setA = setOf("Jacek", "Maciek", "Tomasz")
val setB = setOf("Tomasz", "Maciek", "Jacek")

println(setA == setB)

oczywiście, że zwróci prawdę! Porównanie jest dopuszczalne, nawet kiedy jeden zbiór jest modyfikowalny, a drugi nie!

Funkcja "setOf" w języku Kotlin

"setOf" w języku Kotlin tworzy nowy zbiór niemodyfikowalny. Nie zwraca uwagi na kolejność elementu i ma za zadanie składować jedynie same unikatowe obiekty.


Wszystko na ten temat. Jak możecie się zacząć domyślać, w następnej części opiszę funkcję "mutableSetOf".

PODOBNE ARTYKUŁY