Ostatni dwuetapowy cykl na temat kolekcji! Zainteresujemy się teraz trzecią odmianą popularnej struktury danych jaką jest mapa! Przedstawię Wam jak funkcja "mapOf" w języku Kotlin może zrealizować utworzenie mapy niemodyfikowalnej!

"MAPOF" W JĘZYKU KOTLIN UTWORZY DLA CIEBIE MAPĘ NIEMODYFIKOWALNĄ!

Słyszeliście kiedyś o takiej kolekcji w języku Java jaką jest "HashMap"? Jeśli tak, to już macie pełen obraz o co będzie się rozchodzić. Mapa to struktura danych przeznaczona do składowania par typu "klucz-wartość". Każda wartość jest "podpięta" do odpowiedniego klucza, a typy kluczy i wartości mogą być dowolne (wynika to jasno ze stosowania typów generycznych). Próbując mądrze mówić przy ludziach na temat map, pamiętajcie o istotnej zależności. Wartości MOGĄ się powtarzać, ale klucze już NIE!

TWORZENIE INSTANCJI MAPY NIEMODYFIKOWALNEJ

Wystarczy "mapOf" w języku Kotlin, aby otrzymać świeżutką instancję mapy niemodyfikowalnej. Jednak tym razem, wprowadzamy argumenty inaczej. Ten artykuł choć trochę będzie bardziej oryginalny:

val literals = mapOf('M' to 1000, 'D' to 500, 'C' to 100, 'L' to 50, 'X' to 10, 'V' to 5, 'I' to 1)

Aby prawidłowo przypisać parę klucz-wartość, trzeba najpierw podać wartość klucza (od tego momentu nadajemy także typ klucza), wstawić słowo kluczowe "to" i podać "wartość wartości" (nadając typ wartości jakie mają występować).

A jeśli chodzi o ścisłość, to jest przykład przyporządkowania liczby w systemie dziesiętnym do liczby w systemie rzymskim. Moim zdaniem idealnie pasujący przykład do skorzystania z mapy. Typem klucza jest znak ("Char"), a wartości, liczba całkowita ("Int"). Stąd typ całego obiektu będzie określony jako "Map<Char, Int>". Zwróćcie uwagę na DWA typy wewnątrz nawiasów kątowych oddzielone przecinkami!

val literals : Map<Char, Int> = mapOf('M' to 1000, 'D' to 500, 'C' to 100, 'L' to 50, 'X' to 10, 'V' to 5, 'I' to 1)

ZESTAW PRZYKŁADOWYCH METOD MAPY NIEMODYFIKOWALNEJ

Jak zwykle zaprezentuję przykłady metod jakimi dysponuje "mapOf" w języku Kotlin.

CONTAINSKEY

"Czy mapa zawiera klucz X"? Na takie pytanie może Wam odpowiedzieć metoda "containsKey". Wystarczy w parametrze wskazać o jaki klucz Wam chodzi i wartość boolowska zwracana z metody sama "powie" czy udało się znaleźć taki klucz, czy nie.

println(literals.containsKey('G'))
CONTAINSVALUE

Tak samo można zrobić w stosunku do poszukiwanej wartości. "mapOf" w języku Kotlin to oferuje. Korzystacie wtedy z "containsValue"! Wpisujemy wartość odpowiedniego typu w miejsce parametru i naszym oczom ukaże się zwrot wartości logicznej, tak jak powyżej:

println(literals.containsValue(87))

Uważajcie! Jeżeli klucz nie zostanie znaleziony, który przechowuje szukaną wartość, dojdzie do zgłoszenia wyjątku!

GET

Pobieranie wartości po podaniu odpowiadającego mu klucza? Proszę bardzo! Stosując metodę "get", wprowadzamy za parametr występujący w mapie klucz i na wyjściu otrzymujemy wartość klucza...

println(literals.get('F'))

...lub wartość "null" jeśli wskazany klucz nie istnieje! Informuję, że możecie skorzystać z notacji indeksowej jaką często widać w języku Lua. Chodzi mi o taki manewr:

println(literals['F'])

Bardzo przypomina tablicę, nieprawdaż?

Funkcja "mapOf" w języku Kotlin

"mapOf" tworzy kolekcję niemodyfikowalną zwaną "mapą". Jest zdolna do przechowywania par "klucz-wartość".


Podsumowując. Mapa kryje się pod wywołaniem funkcji "mapOf" w języku Kotlin. Posiada w sobie pary klucz-wartość. Klucz nie może się powtarzać, a wartość jak najbardziej. Dodawanie nowej pary składa się z czterech kroków:

  1. wstaw klucz dowolnego typu
  2. wstaw słowo kluczowe "to"
  3. wstaw wartość dowolnego typu
  4. powtórzyć (ewentualnie)

Mapa modyfikowalna może dodatkowo zmieniać swoją zawartość po jej zainicjowaniu.

PODOBNE ARTYKUŁY