Јава ТрееМап класа чува податке у структури стабла користећи интерфејс мапе. Ова класа проширује класу АбстрацтМап и, као и њена родитељска класа, ТрееМап има два параметра типа. Један од његових параметара типа представља кључеве у ТрееМап-у, док други представља вредности.

Структура података ТрееМап чува парове кључ-вредност и омогућава вам да извршите ЦРУД операције над овим подацима.

Како направити ТрееМап у Јави

Класа ТрееМап има четири конструктора које можете користити за креирање новог ТрееМап објекта. Подразумевани конструктор је најпопуларнији од четири. Овај конструктор не узима аргументе и генерише празну мапу стабла.

// Креирајте нову мапу стабла
ТрееМап купци = Нова ТрееМап();

Горњи код генерише празну мапу стабла тзв купаца.

Попуњавање структуре података ТрееМап

Тхе ставити() метод додаје ставку ТрееМап објекту. Потребна су два аргумента — кључ и његова вредност. Можете додати ставке на мапу стабла било којим случајним редоследом и структура података ће их складиштити у растућем редоследу, према њиховим кључевима.

// Попуни мапу стабла
цустомер.пут(105, "Јессица Јонес");
цустомер.пут(102, "Марк Вилијамс");
цустомер.пут(104, "Пхил Блер");
цустомер.пут(101, "Ким Браун");
цустомер.пут(103, "Џим Рајли");

Код изнад додаје пет купаца, по случајном редоследу, на мапу стабла купаца.

Прегледање ставки у ТрееМап

Класа ТрееМап чува своје податке у објекту. Дакле, да бисте видели све ставке на мапи стабла, можете једноставно да одштампате објекат мапе стабла на конзоли:

// Погледај све ставке мапе стабла као објекат
Систем.оут.принтлн (купци);

Код изнад штампа следећи излаз на конзоли:

{101=Ким Браун, 102=Марк Вилијамс, 103=Џим Рајли, 104=Фил Блер, 105=Џесика Џонс}

Имајте на уму да горњи објекат приказује ставке у растућем редоследу. Такође можете да видите сваку ставку и њен одговарајући кључ користећи Јава фор петља.

// Погледај све ставке са итератором
за (Улаз купац: цустомерс.ентриСет()) {
Систем.оут.принтлн("Кључ: " + цустомер.гетКеи() + " Вредност: " + цустомер.гетВалуе());
}

Код изнад штампа следећи излаз на конзоли:

Кључ: 101 Вредност: Ким Браун
Кључ: 102 Вредност: Марк Вилијамс
Кључ: 103 Вредност: Јим Рилеи
Кључ: 104 Вредност: Фил Блер
Кључ: 105 Вредност: Џесика Џонс

Ажурирање ставки у ТрееМап

Класа ТрееМап вам омогућава да ажурирате постојећу ставку користећи заменити() методом. Постоје две методе замене. Први метод узима постојећи кључ и нову вредност на коју желите да мапирате постојећи кључ.

// Замени постојећу вредност
цустомер.реплаце(101"Ким Смит");
Систем.оут.принтлн (купци);

Код изнад штампа следећи објекат у конзоли:

{101=Ким Смит, 102=Марк Вилијамс, 103=Џим Рајли, 104=Фил Блер, 105=Џесика Џонс}

Као што видите Ким Бровн је сада Ким Смитх. Друга метода реплаце() узима постојећи кључ, тренутну вредност кључа и нову вредност коју желите да мапирате у кључ.

// Замени постојећу вредност
цустомер.реплаце(103„Џим Рајли“, „Мишел Ноа“);
Систем.оут.принтлн (купци);

Код изнад штампа следећи објекат у конзоли:

{101=Ким Браун, 102=Марк Вилијамс, 103=Мишел Ноа, 104=Фил Блер, 105=Џесика Џонс}

У објекту изнад Мицхелле Ноах замењује Јим Рилеи.

Брисање ставки са ТрееМап-а

Ако желите да уклоните једну ставку са мапе стабла, уклони() метода је ваша једина опција. Узима кључ повезан са ставком коју желите да уклоните и враћа избрисану вредност.

// Уклони ставку
цустомер.ремове(104);
Систем.оут.принтлн (купци);

Покретање кода изнад штампа следећи објекат на конзоли:

{101=Ким Смит, 102=Марк Вилијамс, 103=Мишел Ноа, 105=Џесика Џонс}

Ово Јава Цласс такође има а јасно() метод који вам омогућава да избришете све ставке у мапи стабла.

ТрееМап вс. ХасхМап Јава класа

ТрееМап и ХасхМап су две популарније класе Јава мапа. Обоје проширују класу АбстрацтМап. Ова веза даје класама ТрееМап и ХасхМап приступ великом броју истих функција.

Међутим, постоје неке значајне разлике између ове две класе мапа. ТрееМап користи црвено-црно стабло имплементације интерфејса Мап, док ХасхМап користи хеш табелу. ХасхМап вам омогућава да сачувате један нул кључ, док ТрееМап не. Коначно, ХасхМап је бржи од ТрееМап-а. Алгоритамска брзина првог је О(1), док је код другог О(лог (н)).