Јава ТрееМап класа чува податке у структури стабла користећи интерфејс мапе. Ова класа проширује класу АбстрацтМап и, као и њена родитељска класа, ТрееМап има два параметра типа. Један од његових параметара типа представља кључеве у ТрееМап-у, док други представља вредности.
Структура података ТрееМап чува парове кључ-вредност и омогућава вам да извршите ЦРУД операције над овим подацима.
Како направити ТрееМап у Јави
Класа ТрееМап има четири конструктора које можете користити за креирање новог ТрееМап објекта. Подразумевани конструктор је најпопуларнији од четири. Овај конструктор не узима аргументе и генерише празну мапу стабла.
// Креирајте нову мапу стабла
ТрееМап купци = Нова ТрееМап();
Горњи код генерише празну мапу стабла тзв купаца.
Попуњавање структуре података ТрееМап
Тхе ставити() метод додаје ставку ТрееМап објекту. Потребна су два аргумента — кључ и његова вредност. Можете додати ставке на мапу стабла било којим случајним редоследом и структура података ће их складиштити у растућем редоследу, према њиховим кључевима.
// Попуни мапу стабла
цустомер.пут(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), док је код другог О(лог (н)).