Hashmap je jednou z nejdůležitějších datových struktur v programovacím jazyce Java. Jedná se o implementaci rozhraní Map a umožňuje ukládat data jako páry klíč-hodnota. Výhodou Hashmap je, že umožňuje velmi efektivní získávání a vyhledávání hodnot podle klíče díky použití hash funkcí.
Hashmap je založen na principu hashování. Když přidáte prvek do Hashmap, systém vypočítá hash kód klíče a na základě této hodnoty určí, na jakém místě by měla být data uložena uvnitř struktury. Když potřebujete získat hodnotu podle klíče, systém znovu vypočítá hash kód klíče a použije jej k rychlému vyhledávání.
Pokud se hash kódy různých klíčů shodují (což je možné kvůli konečné velikosti hash), dojde ke kolizi. V takovém případě systém používá jinou datovou strukturu - propojený seznam k uložení více hodnot pro jeden hash. Při hledání hodnoty podle klíče systém prochází tímto seznamem postupně, dokud nenajde správnou hodnotu. To může vést ke zpomalení výkonu.
Výchozí velikost Hashmap je 16 položek, ale lze ji změnit při vytváření objektu. Pokud je prvků příliš mnoho, velikost Hashmap se automaticky zvýší, aby se snížily kolize a zvýšil výkon. Příliš mnoho prvků však může také způsobit zpomalení výkonu v důsledku spotřeby paměti RAM.
Co je HashMap a jak funguje v Javě?
HashMap je založen na hash funkci, která převádí klíč na celočíselnou hodnotu - hash kód. Hash kódy se používají k určení indexu prvku v poli, ve kterém jsou uloženy prvky HashMap.
Když přidáte prvek do HashMap, nejprve vypočítá hash kód klíče, poté identifikuje index v poli pomocí hash funkce. Pokud již v této buňce pole existují další prvky, dochází ke kolizi - situaci, kdy různé klíče odpovídají stejnému indexu.
HashMap řeší kolize pomocí metody řetězců: každá buňka pole obsahuje jednosměrný seznam, kde jsou na konec seznamu přidány položky se stejnými hash kódy. Při hledání prvku se nejprve vypočítá hash kód klíče a poté se vyhledá seznam v příslušné buňce pole.
Výhodou HashMap je vysoký výkon při přidávání, odstraňování a vyhledávání položek. Složitost operací je v průměru O (1), díky čemuž je HashMap velmi efektivní datovou strukturou.
Příklady použití HashMap v Javě
Zde je několik příkladů použití HashMap:
HashMap hashMap = new HashMap<>();
hashMap.put("apple", 1);hashMap.put("orange", 2);hashMap.put("banana", 3);
int value = hashMap.get("apple");
hashMap.put("apple", 5);int updatedValue = hashMap.get("apple");
hashMap.remove("banana");
boolean containsKey = hashMap.containsKey("orange");
int size = hashMap.size();
To je jen několik příkladů použití HashMap v Javě. Je to výkonný nástroj pro ukládání a správu dat v programu.