Mapy

Typy danych i wyjątki w Javie

Jim White

Java Developer

Mapy jako tablice przeglądowe

  • Mapy to struktury danych służące jako tablice przeglądowe
    • Przechowują wartość pod określonym kluczem
    • Klucz umożliwia pobranie przechowywanej wartości
  • Przykład: rejestracja u lekarza
    • Pracownik wyszukuje dokumentację medyczną (wartość) na podstawie imienia/daty urodzenia (klucz)

Mapy jako struktura przeglądowa – analogia do rejestracji lekarskiej, gdzie podaje się imię i datę urodzenia w celu odnalezienia dokumentacji

Typy danych i wyjątki w Javie

Interfejs Map

  • Interfejs Map definiuje operacje na parach klucz–wartość
    • Jak zapisać ("put") wartość w magazynie pod określonym kluczem
    • Jak usunąć ("remove") wartość dla danego klucza z Map
    • Jak pobrać wartość na podstawie klucza
  • Istnieje kilka implementacji Map o podobnym zachowaniu
    • Popularną implementacją Map jest HashMap
1 See https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html for details
Typy danych i wyjątki w Javie

Klucze i wartości HashMap

Klucze i wartości w Map lub HashMap mogą być tego samego lub różnych typów

Typy danych i wyjątki w Javie

Tworzenie HashMap

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • Parametryzowany konstruktor HashMap wymaga dwóch typów

    • Pierwszy typ = typ klucza

      Pierwszy parametr generyczny HashMap określa typ kluczy

    • Drugi typ = typ wartości

      Drugi parametr generyczny HashMap określa typ wartości

Typy klucza i wartości w generykach określają typy danych dla kluczy i wartości

  • Wymaga importu java.util.HashMap
Typy danych i wyjątki w Javie

Metody HashMap

  • .put(key,value) – dodaje parę klucz/wartość do tablicy
  • .remove(key) – usuwa parę klucz/wartość dla podanego klucza
  • .get(key) – pobiera wartość z tablicy dla podanego klucza
import java.util.HashMap
...
HashMap<Integer, String> map
    = new HashMap<Integer, String>();
map.put(0, "Jim");
map.put(1, "James");
map.put(3, null);
map.put(4, "James");
map.remove(0);
System.out.println(map);
{1=James, 3=null, 4=James}
String nickname = map.get(1);
System.out.println(nickname);
James
Typy danych i wyjątki w Javie

Collections

  • java.util.Collections to klasa pomocnicza
  • Służy do sortowania, wypełniania, kopiowania, wyszukiwania i innych operacji
    • Zawiera wyłącznie metody static
1 See https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
Typy danych i wyjątki w Javie

Metody Collections

  • Dodanie wielu obiektów do List
    • addAll(List list, Object a, b, ...)
  • Zliczenie wystąpień obiektu w kolekcji
    • frequency(Collection c, Object o)
  • Odwrócenie kolejności obiektów w List
    • reverse(List list)
  • Sortowanie obiektów w List
    • sort(List list)
  • Zastąpienie wszystkich obiektów w List innym obiektem
    • fill(List a, Object o)
ArrayList<String> x = new ArrayList<String>();
Collections.addAll(x,
    "milk", "bread", "eggs", "milk");
System.out.println(x);

int cnt = Collections.frequency(x, "milk"); System.out.println(cnt);
Collections.reverse(x); System.out.println(x);
Collections.sort(x); System.out.println(x);
Collections.fill(x, "sugar"); System.out.println(x);
[milk, bread, eggs, milk]

2
[milk, eggs, bread, milk]
[bread, eggs, milk, milk]
[sugar, sugar, sugar, sugar]
Typy danych i wyjątki w Javie

Arrays

  • Czasem trzeba przekonwertować tablicę (np. int[]) na List
    • Tablice Java mają stały rozmiar – może być potrzebne dynamiczne dodawanie/usuwanie elementów
    • List oferuje większe możliwości (wyszukiwanie, sortowanie itp.)
  • java.util.Arrays to kolejna klasa pomocnicza
    • Umożliwia konwersję tablicy Java na List
Typy danych i wyjątki w Javie

Przykład Arrays

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
Typy danych i wyjątki w Javie

Czas na ćwiczenia!

Typy danych i wyjątki w Javie

Preparing Video For Download...