Trieda HashMap v jazyku Java vám umožňuje ukladať dáta v pároch kľúč-hodnota. To nielen uľahčuje vyhľadávanie a správu zoznamu, ale poskytuje vám aj množstvo možností prístupu. Tu si prejdeme najdôležitejšie metódy.

Čo sú HashMaps v Jave?

Existuje viacero spôsobov ukladania a načítania údajov. Ktorý typ ukladania je najvhodnejší, závisí od toho, ako chcete údaje používať. V mnohých prípadoch je pravdepodobne najlepším riešením trieda Java HashMap. Na rozdiel od iných metód táto trieda ukladá údaje ako páry kľúč-hodnota. To znamená, že každému kľúču je priradená presne jedna hodnota. Ak chcete načítavať hodnotu, môžete použiť príslušný kľúč, aby ste získali požadovaný výsledok. Kľúče a hodnoty môžu pozostávať z úplne odlišných typov údajov, vrátane reťazcov, čísel alebo iných objektov.

Trieda Java HashMap ponúka niekoľko výhod. Prvou z nich je, že môžete vykonávať rýchle vyhľadávanie v rámci programovacieho jazyka. Prístup kľúč-hodnota tiež zabezpečuje, že jednej kľúčovej hodnote nie je priradených viacero hodnôt, čím sa zabraňuje duplicitám. Môžete však pridať ten istý objekt niekoľkokrát pomocou rôznych kľúčov. Tento typ funkcie ukladania a vyhľadávania má pozitívny vplyv na výkon v porovnaní s rigidnými zoznamami, ktoré sú podstatne menej flexibilné. To je tiež jedna z hlavných výhod úložísk kľúč-hodnota, ktoré používajú rovnaký princíp. V nasledujúcich častiach vám ukážeme, ako vytvoriť a používať Java HashMaps.

Ako vytvoriť a používať HashMaps v Jave

Ak chcete vytvoriť novú HashMap v Jave, musíte najskôr importovať triedu. Na to použite príkaz Java import. Kód vyzerá takto:

import java.util.HashMap;
HashMap<String, String> nameOfTheHashMap = new HashMap<String, String> ();
java

Dva typy údajov, ktoré sú oddelené čiarkou (v tomto prípade String, String), sú kľúč a hodnota.

Vytvorenie novej HashMap

Aby sme lepšie vysvetlili, ako fungujú Java HashMaps, pripravili sme jednoduchý príklad. V našom príklade máme zoznam zákazníkov, ktorý chce spoločnosť uložiť a mať k nemu kedykoľvek prístup. Zoznam obsahuje meno každého zákazníka a jedinečné číslo zákazníka. Hoci číslo zákazníka (kľúč v našom príklade) je vždy jedinečné, je možné, že viacerí zákazníci majú rovnaké meno. Každý z týchto zákazníkov má však svoje vlastné jedinečné číslo. Toto číslo je zaznamenané ako celočíselný dátový typ a mená ako reťazce. Tu je návod, ako to nastaviť v Java HashMap:

import java.util.HashMap;
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	}
}
java

Pridávanie prvkov

Teraz máme Java HashMap, ale stále je prázdna. Na pridanie nových párov kľúč-hodnota použijeme metódu put(). Funguje to takto:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList);
	}
}
java

Na zobrazenie zoznamu zákazníkov použijeme príkaz System.out.println. Výsledok by mal vyzerať takto:

{1077=Jerry Mowry, 15312=Peter Smith, 73329=Maria Grosso}
java

Načítanie prvkov

Teraz sme vytvorili zoznam zákazníkov, ktorý môže obsahovať viacero záznamov. Chceme mať tiež možnosť pristupovať k jednotlivým záznamom zákazníkov individuálne. Na to použijeme kľúč metódy get(). Tu je príklad, ako to funguje:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.get(1077));
	}
}
java

Malo by sa zobraziť len meno „Jerry Mowry“.

Vymazanie záznamov

Ak sa chcete zbaviť záznamu, použite metódu remove(). Tu je príklad, ako túto metódu použiť:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	customerList.remove(1077);
	System.out.println(customerList);
	}
}
java

Výstup teraz vyzerá takto:

{15312=Peter Smith, 73329=Maria Grosso}
java

Ďalšou možnosťou je vymazať celý zoznam. Na to použite metódu clear().

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	customerList.clear();
	System.out.println(customerList);
	}
}
java

Teraz je jediným výstupom, ktorý dostaneme, toto:

{ }
java

Ako určiť počet záznamov

Hoci je naša Java HashMap pomerne jednoduchá, túto triedu môžete použiť aj na správu väčších a zložitejších projektov. Pri väčšom projekte budete možno chcieť určiť presný počet záznamov, ktoré máte. Veď ide o vašu celú zákaznícku základňu. Na to môžete použiť size(). Postupujte takto:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.size());
	}
}
java

V našom príklade je výstupom číslo 3.

Ako zobraziť iba kľúče alebo hodnoty

Pomocou cyklu for-each môžete tiež získať zoznam, ktorý obsahuje iba kľúče alebo hodnoty. Na načítanie kľúčov použite metódu keySet() a na načítanie hodnôt použite metódu values(). V nasledujúcom príklade kódu použijeme values():

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	for (String i : customerList.values()) {
		System.out.println(i);
		}
	}
}
java

Výstup je:

Jerry Mowry
Peter Smith
Maria Grosso
java

Kontrola, či HashMap obsahuje konkrétnu hodnotu alebo kľúč

Okrem prístupu k konkrétnej položke môžete tiež skontrolovať, či položka už existuje v Java HashMap. Môžete to urobiť pomocou metódy containsKey() (pre kľúče) a metódy containsValue() (pre hodnoty). Ak je prvok zahrnutý, výstupom bude „true“. Ak prvok nie je v HashMap, výstupom bude „false“. Takto fungujú obe metódy:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.containsKey(15312));
	System.out.println(customerList.containsValue("Stuart Miller");
	}
}
java

Keďže kľúč „15312“ je zahrnutý, ale hodnota „Stuart Miller“ nie je, výstup vyzerá takto.

true
false
java
Prejsť na hlavné menu