Јава ХасхМап и ТрееМап обе су класе оквира Јава Цоллецтионс. Имплементација Јава мапе обично делује као хеш табела са груписаним садржајем. Када канте постану превелике, трансформишу се у чворове ТрееНодес , од којих је сваки структуриран слично онима у јава.утил.ТрееМап .
ХасхМап
ХасхМап имплементира Мапа, може се клонирати и Сериализабле интерфејс. Проширује се АбстрацтМап класа. То припада јава.утил пакет.
- ХасхМап садржи вредност засновану на кључу.
- Може имати један нул кључ и више нул вредности.
- ХасхМап не одржава ред током понављања.
- Садржи јединствене елементе.
- Ради на принципу хеширања.
ТрееМап
ТрееМап класа се проширује АбстрацтМап класе и имплементира НавигаблеМап , Цлонеабле , и Сериализабле интерфејс. ТрееМап је пример а СортедМап . Реализује га црвено-црно стабло, што значи да је редослед тастера сортиран.
- ТрееМап такође садржи вредност засновану на кључу.
- ТрееМап је сортиран по кључевима.
- Садржи јединствене елементе.
- Не може имати нулл кључ, али имати више нул вредности.
- Кључеви су у растућем редоследу.
- Чува објекат у структури дрвета.
Сличности између ХасхМап-а и ТрееМап-а
- Обе класе се проширују АбстрацтМап класа.
- Мапа је објекат који складишти кључ/вредност парова. У пару кључ/вредност, сваки кључ је јединствен, али њихове вредности могу бити дупликат .
- Обе класе представљају пресликавање из кључ до вредности .
- Обе карте нису синхронизовано .
- Коришћење карте ставити() метод за додавање елемента на мапу.
- Итератор баца а ЦонцуррентМодифицатионЕкцептион ако се мапа на било који начин измени.
Кључна разлика између ХасхМап-а и ТрееМап-а је:
ХасхМап не чува редослед понављања док је ТрееМап сачувајте ред коришћењем у поређењу са() метод или а компаратор постављен у конструктору ТрееМап-а.
Следећа табела описује разлике између ХасхМап-а и ТрееМап-а.
Основа | ХасхМап | ТрееМап |
---|---|---|
Дефиниција | Јава ХасхМап је имплементација интерфејса Мапе заснована на хеш таблици. | Јава ТрееМап је имплементација интерфејса Мапе заснована на структури дрвета. |
Интерфејс Имплементи | ХасхМап имплементира Мапа, може се клонирати , и Сериализабле интерфејс. | ТрееМап имплементације НавигаблеМап, Цлонеабле , и Сериализабле интерфејс. |
Нулл кључеви/вредности | ХасхМап дозвољава а једно нул кључ и вишеструко нулте вредности. | ТрееМап не дозвољава нула кључеве али могу имати вишеструко нулте вредности. |
Хомогене/Хетерогене | ХасхМап дозвољава хетерогене елементе јер не врши сортирање на кључевима. | ТрееМап дозвољава хомогене вредности као кључ због сортирања. |
Перформансе | ХасхМап је брже него ТрееМап јер обезбеђује перформансе у константном времену које су О(1) за основне операције као што су гет() и пут(). | ТрееМап је спор у поређењу са ХасхМап-ом јер обезбеђује перформансе О(лог(н)) за већину операција као што су адд(), ремове() и цонтаинс(). |
Структура података | ХасхМап класа користи хасх табле . | ТрееМап интерно користи а Црвена црна дрво, које је самобалансирајуће стабло бинарног претраживања. |
Цомпарисон Метход | Користи једнако() методом Објекат класе за поређење кључева. Метода екуалс() класе Мап је замењује. | Користи се у поређењу са() метод за упоређивање кључева. |
Функционалност | ХасхМап класа садржи само основне функције као што су гет(), пут(), КеиСет() , итд. | ТрееМап класа је богата функционалношћу, јер садржи функције као што су: таилМап(), фирстКеи(), ластКеи(), поллФирстЕнтри(), поллЛастЕнтри() . |
Редослед елемената | ХасхМап не одржава никакав ред. | Елементи су сортирани у природни поредак (узлазни). |
Користи | ХасхМап би требало да се користи када нам није потребан пар кључ-вредност у сортираном редоследу. | ТрееМап треба користити када нам је потребан пар кључ-вредност у сортираном (узлазном) редоследу. |
Пример ХасхМап вс ТрееМап
У следећем примеру, можемо приметити да су елементи ХасхМап-а у насумичном редоследу, док су елементи ТрееМап-а распоређени у растућем редоследу.
import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } }
Излаз: