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> ();
java

Dva 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<>();
	}
}
java

Př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);
	}
}
java

K 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}
java

Načí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));
	}
}
java

Mě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);
	}
}
java

Výstup nyní vypadá takto:

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

Další 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);
	}
}
java

Nyní je jediným výstupem, který dostaneme, toto:

{ }
java

Jak 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());
	}
}
java

V 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);
		}
	}
}
java

Výstup je:

Jerry Mowry
Peter Smith
Maria Grosso
java

Kontrola, 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");
	}
}
java

Vzhledem k tomu, že klíč „15312“ je zahrnut, ale hodnota „Stuart Miller“ není, výstup vypadá takto.

true
false
java
Přejít do hlavního menu