W dniu dzisiejszym przechodzimy do następnego tematu podzielonego na kilka osobnych materiałów. Sięgniemy po informacje dotyczące kolekcji. Będę Wam wykładać na temat trzech struktur danych występujących także w Javie, zatem ci co już zaczynają sobie przypominać o co chodzi, to część opanowania najlepszych zastosowań mają już z głowy. Aby nie ponawiać tego samego, zostawiam link do artykułu, w którym tłumaczę zastosowania list, zbiorów i map. Starczy tego wstępu. Oto pierwsza część nawijki o kolekcjach, a na scenę wychodzi jako pierwsza funkcja "listOf" w języku Kotlin, czyli tworzenie listy niemodyfikowalnej.

"LISTOF" W JĘZYKU KOTLIN SŁUŻY DO TWORZENIA OBIEKTÓW TYPU "LISTA"

Rozpoczniemy cykl od listy. Lista to jedna ze struktur danych przeznaczona do przechowywania wielu obiektów tego samego typu, która zdolna jest do dynamicznego modyfikowania swojego rozmiaru! Nie tak jak w tablicy, gdzie rozmiar jest ustalany z góry (statycznie) podczas pisania kodu. To jest jedna cecha. Druga to taka, że zachowuje kolejność obiektów do niej wprowadzanych, a także nie zwraca uwagi na ich unikatowość, czyli pozwala na umieszczanie duplikatów.

TWORZENIE INSTANCJI LISTY

Przejdźmy migiem do przykładu w kodzie źródłowym. Listy tworzy się za pomocą funkcji "listOf" w języku Kotlin, w taki sposób jak przedstawiono poniżej:

val numbers = listOf(13, 15, 27, -6)

Zaraz...brak typu wstawianych obiektów? W większości sytuacji nie trzeba. W wyniku wprowadzenia wartości liczbowych, kompilator może domyślić się typu i przypisze typ "Int". Pełny typ powyższej zmiennej będzie zatem brzmieć "List<Int>". Czyli podczas kompilowania, przybierze to taką postać:

val numbers : List<Int> = listOf(13, 15, 27, -6)

Jeżeli nie będzie żadnych "poszlak" dla kompilatora o jaki typ może chodzić np. sama deklaracja zmiennej, wówczas trzeba go określić samodzielnie w sposób jawny:

var list : List<Int>

list = listOf(13, 15, 27, -6)

ZESTAW PRZYKŁADOWYCH METOD LISTY

Korzystając z "listOf" w języku Kotlin, instancja zaopatrzy się w kilkanaście przydatnych metod, którymi możemy się bez problemu posłużyć. Oto kilka przykładów:

INDEXOF

"indexOf" ma na celu znaleźć dla nas miejsce na liście jakie zajmuje szukany przez nas obiekt. Zwraca liczbę całkowitą w postaci indeksu na którym "leży" znaleziony obiekt (-1, jeśli w ogóle takiego nie znaleziono).

println(numbers.indexOf(27))
SORTED

Metoda "sorted" zwraca nową kopię listy sortując elementy w kolejności od najmniejszej do największej wartości. W sytuacji, gdy posiadamy obiekty powstałe z naszych klas, może być potrzebne zdefiniowanie kryterium sortowania jakie programiści Javy znają z praktyki stosowania metody "compareTo". Kiedy używamy "listOf" w języku Kotlin i tak bardzo pragniemy posortować elementy, nie trzeba się trudzić przy wynajdowaniu algorytmu. Język zrobi to za nas.

println(list.sorted())
REVERSED

"reversed" dosłownie "odwraca" kolejność elementów, jakby zostały przedstawione od tyłu i zwraca nową kopię listy. W połączeniu z metodą "sorted", możemy dwoma wywołaniami uzyskać sortowanie w drugą stronę, czyli od największej do najmniejszej.

println(list.reversed())

"RÓWNOŚĆ" LIST

Kilka zdań o porównywaniu ze sobą list. Ich "równość" będzie zależeć od tego, czy obie listy zawierają identyczne wartości w tej samej kolejności. Na przykład te listy:

val listA = listOf(13, 15, 27, -6)
val listB = listOf(13, 27, -6, 15)

println(listA == listB)

zwrócą fałsz, gdyż mimo posiadania wszystkich tych samych elementów, nie trzymają się identycznej kolejności. Dozwolone jest też porównywanie listy niemodyfikowalnej "List" z listą modyfikowalną "MutableList".

TO BĘDZIE LISTA WZBRANIAJĄCA SIĘ PRZED MODYFIKACJĄ ZAWARTOŚCI!

Wspomnę o jeszcze jednym ważnym punkcie. "listOf" w języku Kotlin tworzy listę niemodyfikowalną. Oznacza to, że po zainicjowaniu listy wprowadzonymi wartościami (albo bez nich), nie da się później w żaden sposób zmodyfikować jej zawartości niż ma to miejsce w języku Java. Sposób aby umożliwić modyfikację jest bardzo prosty - należy przejść na typ "MutableList".

Funkcja "listOf" w języku Kotlin

Przy pomocy funkcji "listOf" w języku Kotlin, możemy definiować listy do przechowywania wielu obiektów tego samego typu. W odróżnieniu od tablicy, potrafi rozrastać się dynamicznie podczas działania programu.


Podoba się Wam? Znacznie łatwiej się tworzy te struktury w Kotlinie niż w Javie, gdyż można uniknąć jawnego definiowania typu obiektów jakie mają się tam znaleźć. Spodziewajcie się osobnych tłumaczeń dla zbioru i mapy!

PODOBNE ARTYKUŁY