Třída Java TreeMap ukládá data ve stromové struktuře pomocí mapového rozhraní. Tato třída rozšiřuje třídu AbstractMap a stejně jako její rodičovská třída má TreeMap dva parametry typu. Jeden z jeho parametrů typu představuje klíče ve stromové mapě, zatímco druhý představuje hodnoty.
Datová struktura TreeMap ukládá páry klíč-hodnota a umožňuje s těmito daty provádět operace CRUD.
Jak vytvořit TreeMap v Javě
Třída TreeMap má čtyři konstruktory, které můžete použít k vytvoření nového objektu TreeMap. Výchozí konstruktor je nejoblíbenější ze čtyř. Tento konstruktor nebere žádné argumenty a generuje prázdnou mapu stromu.
// Vytvoří novou stromovou mapu
Stromová mapa zákazníci = Nový Stromová mapa();
Výše uvedený kód generuje prázdnou mapu stromu s názvem zákazníky.
Naplnění datové struktury TreeMap
The dát() metoda přidá položku do objektu TreeMap. Vyžaduje dva argumenty – klíč a jeho hodnotu. Do stromové mapy můžete přidávat položky v libovolném náhodném pořadí a datová struktura je bude ukládat ve vzestupném pořadí podle jejich klíčů.
// Vyplnění stromové mapy
customers.put(105, "Jessica Jones");
customers.put(102, "Mark Williams");
customers.put(104, "Phil Blair");
customers.put(101, "Kim Brown");
customers.put(103, "Jim Riley");
Výše uvedený kód přidá pět zákazníků v náhodném pořadí do stromové mapy zákazníků.
Zobrazení položek ve stromové mapě
Třída TreeMap ukládá svá data do objektu. Chcete-li tedy vidět všechny položky ve stromové mapě, můžete jednoduše vytisknout objekt stromové mapy do konzole:
// Zobrazit všechny položky stromové mapy jako objekt
System.out.println (zákazníci);
Výše uvedený kód vytiskne do konzole následující výstup:
{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Všimněte si, že výše uvedený objekt zobrazuje položky ve vzestupném pořadí. Můžete také zobrazit každou položku a její odpovídající klíč pomocí smyčka Java for.
// Zobrazení všech položek s iterátorem
pro (Vstup customer: customers.entrySet()) {
System.out.println("Klíč: " + customer.getKey() + " Hodnota: " + customer.getValue());
}
Výše uvedený kód vytiskne do konzole následující výstup:
Klíč: 101 Hodnota: Kim Brown
Klíč: 102 Hodnota: Mark Williams
Klíč: 103 Hodnota: Jim Riley
Klíč: 104 Hodnota: Phil Blair
Klíč: 105 Hodnota: Jessica Jones
Aktualizace položek ve stromové mapě
Třída TreeMap vám umožňuje aktualizovat existující položku pomocí nahradit() metoda. Existují dva způsoby nahrazení. První metoda přebírá existující klíč a novou hodnotu, na kterou chcete existující klíč namapovat.
// Nahradí existující hodnotu
zákazníci.nahradit(101"Kim Smith");
System.out.println (zákazníci);
Výše uvedený kód vytiskne v konzole následující objekt:
{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Jak můžete vidět Kim Brownová je teď Kim Smithová. Druhá metoda replace() přebírá existující klíč, aktuální hodnotu klíče a novou hodnotu, kterou chcete na klíč mapovat.
// Nahradí existující hodnotu
zákazníci.nahradit(103"Jim Riley", "Michelle Noah");
System.out.println (zákazníci);
Výše uvedený kód vytiskne v konzole následující objekt:
{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}
V objektu výše Michelle Noah nahrazuje Jim Riley.
Odstranění položek ze stromové mapy
Pokud chcete odstranit jednu položku ze stromové mapy, odstranit() metoda je vaše jediná možnost. Vezme klíč spojený s položkou, kterou chcete odstranit, a vrátí smazanou hodnotu.
// Odebrání položky
customers.remove(104);
System.out.println (zákazníci);
Spuštěním výše uvedeného kódu se do konzoly vytiskne následující objekt:
{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}
Tento Třída Java má také a Průhledná() metoda, která umožňuje smazat všechny položky ve stromové mapě.
TreeMap vs. třída HashMap Java
TreeMap a HashMap jsou dvě z nejpopulárnějších tříd map Java. Oba rozšiřují třídu AbstractMap. Tento vztah poskytuje třídám TreeMap a HashMap přístup k mnoha stejným funkcím.
Mezi těmito dvěma třídami map jsou však některé pozoruhodné rozdíly. TreeMap používá červeno-černou stromovou implementaci rozhraní mapy, zatímco HashMap používá hašovací tabulku. HashMap umožňuje uložit jeden klíč null, zatímco TreeMap nikoli. A konečně, HashMap je rychlejší než TreeMap. Algoritmická rychlost prvního je O(1), zatímco druhého je O(log (n)).