Čo je Java HashMap a ako ju používať
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> ();javaDva 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<>();
}
}javaPridá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);
}
}javaNa 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}javaNačí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));
}
}javaMalo 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);
}
}javaVý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);
}
}javaTeraz je jediným výstupom, ktorý dostaneme, toto:
{ }javaAko 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());
}
}javaV 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);
}
}
}javaVýstup je:
Jerry Mowry
Peter Smith
Maria GrossojavaKontrola, č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");
}
}javaKeďže kľúč „15312“ je zahrnutý, ale hodnota „Stuart Miller“ nie je, výstup vyzerá takto.
true
falsejava