Mapy

Datové typy a výjimky v Javě

Jim White

Java Developer

Mapy jako vyhledávací tabulky

  • Mapy slouží jako vyhledávací datové struktury
    • Ukládají „hodnotu" na konkrétní „klíč"
    • Pomocí „klíče" se načte uložená „hodnota"
  • Příklad: volání lékaře
    • Lékař vyhledá zdravotní záznam (objekt hodnoty) podle jména/data narození (klíče)

Mapy slouží jako vyhledávací struktura – podobně jako při volání lékaře, kdy je pro nalezení záznamu dotázán na jméno a datum narození

Datové typy a výjimky v Javě

Rozhraní Map

  • Rozhraní Map definuje operace nad páry klíč–hodnota
    • Jak uložit hodnotu do úložiště na konkrétní klíč
    • Jak „odebrat" hodnotu na daném klíči z Map
    • Jak načíst hodnotu pro daný klíč
  • Existuje několik implementací Map s podobným chováním
    • Oblíbenou implementací Map je HashMap
1 See https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html for details
Datové typy a výjimky v Javě

Klíče a hodnoty HashMap

Klíče a hodnoty Map nebo HashMap mohou být stejného nebo různého typu

Datové typy a výjimky v Javě

Konstrukce HashMap

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • Parametrizovaný/generický konstruktor HashMap vyžaduje dva typy

    • První typ = typ klíče

      První generický parametr HashMap je pro klíče

    • Druhý typ = typ hodnoty

      Druhý generický parametr HashMap je pro hodnoty

Typy klíče a hodnoty v generikách určují datový typ klíčů a hodnot

  • Vyžaduje import java.util.HashMap
Datové typy a výjimky v Javě

Metody HashMap

  • Použijte .put(key,value) pro přidání páru klíč/hodnota do tabulky
  • Použijte .remove(key) pro odebrání páru na daném klíči
  • Použijte .get(key) pro načtení hodnoty z tabulky pro daný klíč
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
Datové typy a výjimky v Javě

Collections

  • java.util.Collections je pomocná třída
  • Slouží k řazení, plnění, kopírování, vyhledávání a dalšímu
    • Obsahuje pouze static metody
1 See https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
Datové typy a výjimky v Javě

Metody Collections

  • Přidání více objektů do List
    • addAll(List list, Object a, b, ...)
  • Vrácení počtu výskytů objektu v kolekci
    • frequency(Collection c, Object o)
  • Obrácení pořadí objektů v List
    • reverse(List list)
  • Seřazení objektů v List
    • sort(List list)
  • Nahrazení všech objektů v List jiným objektem
    • 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]
Datové typy a výjimky v Javě

Arrays

  • Někdy je potřeba převést pole (např. int[]) na List
    • Java pole nemají proměnnou velikost a může být nutné ji měnit
    • List nabízí více možností (vyhledávání, řazení aj.)
  • java.util.Arrays je další pomocná třída
    • Umožňuje převod Java pole na List
Datové typy a výjimky v Javě

Příklad Arrays

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
Datové typy a výjimky v Javě

Let's practice!

Datové typy a výjimky v Javě

Preparing Video For Download...