Co je Java HashMap a jak ji používat
Třída HashMap v Javě umožňuje ukládat data v párech klíč-hodnota. To nejen usnadňuje vyhledávání a správu seznamu, ale také poskytuje řadu možností přístupu. Zde si projdeme nejdůležitější metody.
Co jsou HashMapy v Javě?
Existuje několik způsobů, jak ukládat a načítat data. Který typ úložiště je nejvhodnější, závisí na tom, jak hodláte data používat. V mnoha případech je pravděpodobně nejlepším řešením třída Java HashMap. Na rozdíl od jiných metod ukládá tato třída data jako páry klíč-hodnota. To znamená, že každému klíči je přiřazena přesně jedna hodnota. Pokud chcete načíst hodnotu, můžete použít odpovídající klíč a získat požadovaný výsledek. Klíče a hodnoty mohou sestávat z úplně odlišných datových typů, včetně řetězců, čísel nebo jiných objektů.
Třída Java HashMap nabízí několik výhod. První z nich je, že můžete provádět rychlé vyhledávání v rámci programovacího jazyka. Přístup klíč-hodnota také zajišťuje, že jednomu klíči není přiřazeno více hodnot, čímž se zabrání duplicitám. Můžete však přidat stejný objekt několikrát pomocí různých klíčů. Tento typ úložiště a vyhledávací funkce má pozitivní vliv na výkon ve srovnání s rigidními seznamy, které jsou výrazně méně flexibilní. To je také jedna z hlavních výhod úložišť klíč-hodnota, která používají stejný princip. V následujících částech vám ukážeme, jak vytvořit a používat Java HashMaps.
Jak vytvořit a používat HashMapy v Javě
Chcete-li v Javě vytvořit novou HashMap, musíte nejprve importovat třídu. K tomu použijte příkaz Java import. Kód vypadá takto:
import java.util.HashMap;
HashMap<String, String> nameOfTheHashMap = new HashMap<String, String> ();javaDva datové typy, které jsou odděleny čárkou (v tomto případě String, String), jsou klíč a hodnota.
Vytvoření nové HashMap
Abychom lépe vysvětlili, jak fungují Java HashMaps, připravili jsme jednoduchý příklad. V našem příkladu máme seznam zákazníků, který chce společnost uložit a mít k němu kdykoli přístup. Seznam obsahuje jméno každého zákazníka a jedinečné číslo zákazníka. Ačkoli číslo zákazníka (klíč v našem příkladu) je vždy jedinečné, je možné, že více zákazníků má stejné jméno. Každý z těchto zákazníků má však své vlastní jedinečné číslo. Toto číslo je zaznamenáno jako datový typ celé číslo a jména jako řetězce. Zde je návod, jak to nastavit v Java HashMap:
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> customerList = new HashMap<>();
}
}javaPřidávání prvků
Nyní máme Java HashMap, ale je stále prázdná. K přidání nových párů klíč-hodnota použijeme metodu 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);
}
}javaK zobrazení seznamu zákazníků použijeme příkaz System.out.println. Výsledek by měl vypadat takto:
{1077=Jerry Mowry, 15312=Peter Smith, 73329=Maria Grosso}javaNačítání prvků
Nyní jsme vytvořili seznam zákazníků, který může obsahovat mnoho záznamů. Chceme také mít možnost přistupovat k jednotlivým záznamům zákazníků samostatně. K tomu předáme klíč metodě get(). Zde je příklad, jak 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));
}
}javaMělo by se zobrazit pouze jméno „Jerry Mowry“.
Mazání záznamů
Pokud chcete odstranit záznam, použijte metodu remove(). Zde je příklad použití této metody:
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 nyní vypadá takto:
{15312=Peter Smith, 73329=Maria Grosso}javaDalší možností je smazat celý seznam. K tomu použijte metodu 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);
}
}javaNyní je jediným výstupem, který dostaneme, toto:
{ }javaJak určit počet záznamů
Ačkoli je naše Java HashMap poměrně jednoduchá, můžete tuto třídu použít i pro správu větších a složitějších projektů. U větších projektů možná budete chtít určit přesný počet záznamů, které máte. Koneckonců, jedná se o celou vaši zákaznickou základnu. K tomu můžete použít 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šem příkladu je výstupem číslo 3.
Jak zobrazit pouze klíče nebo hodnoty
Pomocí smyčky for-each můžete také získat seznam, který obsahuje pouze klíče nebo hodnoty. K načtení klíčů použijte metodu keySet() a k načtení hodnot použijte metodu values(). V následujícím příkladu 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, zda HashMap obsahuje konkrétní hodnotu nebo klíč
Kromě přístupu ke konkrétnímu záznamu můžete také zkontrolovat, zda již záznam v Java HashMap existuje. To můžete provést pomocí metody containsKey() (pro klíče) a metody containsValue() (pro hodnoty). Pokud je prvek zahrnut, výstupem bude „true“. Pokud prvek v HashMap není, výstupem bude „false“. Takto obě metody fungují:
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");
}
}javaVzhledem k tomu, že klíč „15312“ je zahrnut, ale hodnota „Stuart Miller“ není, výstup vypadá takto.
true
falsejava