A Java TreeMap osztály egy fastruktúrában tárolja az adatokat egy térképi felület segítségével. Ez az osztály kiterjeszti az AbstractMap osztályt, és a szülőosztályhoz hasonlóan a TreeMapnek is két típusparamétere van. Az egyik típusparaméter a TreeMap kulcsait, míg a másik az értékeket reprezentálja.
A TreeMap adatstruktúra kulcs-érték párokat tárol, és lehetővé teszi CRUD műveletek végrehajtását ezekkel az adatokkal.
Hogyan készítsünk TreeMap-et Java-ban
A TreeMap osztály négy konstruktorral rendelkezik, amelyek segítségével új TreeMap objektumot hozhat létre. Az alapértelmezett konstruktor a legnépszerűbb a négy közül. Ez a konstruktor nem vesz fel argumentumokat, és üres fatérképet hoz létre.
// Új fatérkép létrehozása
TreeMap ügyfelek = új TreeMap();
A fenti kód egy üres fatérképet generál, melynek neve vásárlók.
A TreeMap adatstruktúra feltöltése
Az tesz() metódus hozzáad egy elemet egy TreeMap objektumhoz. Két argumentum kell hozzá – egy kulcs és annak értéke. A fatérképhez tetszőleges sorrendben hozzáadhat elemeket, és az adatstruktúra növekvő sorrendben, a kulcsaik szerint tárolja azokat.
// Fatérkép feltöltése
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");
A fenti kód öt ügyfelet ad véletlenszerű sorrendben az ügyfelek fatérképéhez.
Elemek megtekintése a TreeMap-en
A TreeMap osztály az adatait egy objektumban tárolja. Tehát a fatérkép összes elemének megtekintéséhez egyszerűen kinyomtathatja a fatérkép objektumot a konzolra:
// Az összes fatérkép-elem megtekintése objektumként
System.out.println (ügyfelek);
A fenti kód a következő kimenetet nyomtatja ki a konzolra:
{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Vegye figyelembe, hogy a fenti objektum az elemeket növekvő sorrendben jeleníti meg. Az egyes elemeket és a hozzájuk tartozó kulcsot is megtekintheti a használatával egy Java for ciklus.
// Az összes elem megtekintése iterátorral
számára (Belépés ügyfél: customers.entrySet()) {
System.out.println("Kulcs: " + customer.getKey() + " Érték: " + customer.getValue());
}
A fenti kód a következő kimenetet nyomtatja ki a konzolra:
Kulcs: 101 Érték: Kim Brown
Kulcs: 102 Érték: Mark Williams
Kulcs: 103 Érték: Jim Riley
Kulcs: 104 Érték: Phil Blair
Kulcs: 105 Érték: Jessica Jones
Elemek frissítése a TreeMapben
A TreeMap osztály lehetővé teszi egy meglévő elem frissítését a csere() módszer. Két csere módszer létezik. Az első módszer egy meglévő kulcsot és azt az új értéket vesz fel, amelyre a meglévő kulcsot le kívánja rendelni.
// A meglévő érték cseréje
customers.replace(101"Kim Smith");
System.out.println (ügyfelek);
A fenti kód a következő objektumot nyomtatja ki a konzolban:
{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Amint látod Kim Brown most Kim Smith. A második helyettesítő() metódus egy meglévő kulcsot, a kulcs aktuális értékét és azt az új értéket vesz fel, amelyet hozzá szeretne rendelni a kulcshoz.
// A meglévő érték cseréje
customers.replace(103"Jim Riley", "Michelle Noah");
System.out.println (ügyfelek);
A fenti kód a következő objektumot nyomtatja ki a konzolban:
{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}
A fenti objektumban Michelle Noah helyettesíti Jim Riley.
Elemek törlése a TreeMapről
Ha egyetlen elemet szeretne eltávolítani a fatérképről, a eltávolítás() módszer az egyetlen lehetőség. Elveszi az eltávolítani kívánt elemhez tartozó kulcsot, és visszaadja a törölt értéket.
// Elem eltávolítása
customers.remove(104);
System.out.println (ügyfelek);
A fenti kód futtatása a következő objektumot nyomtatja ki a konzolra:
{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}
Ez Java osztály is rendelkezik a egyértelmű() módszer, amely lehetővé teszi a fatérkép összes elemének törlését.
A TreeMap vs. a HashMap Java osztály
A TreeMap és a HashMap a két legnépszerűbb Java térképosztály. Mindkettő kiterjeszti az AbstractMap osztályt. Ez a kapcsolat hozzáférést biztosít a TreeMap és HashMap osztályoknak sok azonos funkcióhoz.
Van azonban néhány figyelemre méltó különbség e két térképosztály között. A TreeMap a Map felület vörös-fekete fa megvalósítását használja, míg a HashMap hash táblát. A HashMap lehetővé teszi egyetlen null kulcs tárolását, míg a TreeMap nem. Végül a HashMap gyorsabb, mint a TreeMap. Az előbbi algoritmikus sebessége O(1), míg az utóbbié O(log (n)).