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.

instagram viewer

// 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)).