logo

Разлика између ХасхМап-а и ТрееМап-а

Јава ХасхМап и ТрееМап обе су класе оквира Јава Цоллецтионс. Имплементација Јава мапе обично делује као хеш табела са груписаним садржајем. Када канте постану превелике, трансформишу се у чворове ТрееНодес , од којих је сваки структуриран слично онима у јава.утил.ТрееМап .

ХасхМап

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

  • ХасхМап садржи вредност засновану на кључу.
  • Може имати један нул кључ и више нул вредности.
  • ХасхМап не одржава ред током понављања.
  • Садржи јединствене елементе.
  • Ради на принципу хеширања.

ТрееМап

ТрееМап класа се проширује АбстрацтМап класе и имплементира НавигаблеМап , Цлонеабле , и Сериализабле интерфејс. ТрееМап је пример а СортедМап . Реализује га црвено-црно стабло, што значи да је редослед тастера сортиран.

  • ТрееМап такође садржи вредност засновану на кључу.
  • ТрееМап је сортиран по кључевима.
  • Садржи јединствене елементе.
  • Не може имати нулл кључ, али имати више нул вредности.
  • Кључеви су у растућем редоследу.
  • Чува објекат у структури дрвета.

Сличности између ХасхМап-а и ТрееМап-а

    ХасхМапи ТрееМап класе имплементирати Цлонеабле и Сериализабле интерфејс.
  • Обе класе се проширују АбстрацтМап класа.
  • Мапа је објекат који складишти кључ/вредност парова. У пару кључ/вредност, сваки кључ је јединствен, али њихове вредности могу бити дупликат .
  • Обе класе представљају пресликавање из кључ до вредности .
  • Обе карте нису синхронизовано .
  • Коришћење карте ставити() метод за додавање елемента на мапу.
  • Итератор баца а ЦонцуррентМодифицатионЕкцептион ако се мапа на било који начин измени.

Кључна разлика између ХасхМап-а и ТрееМап-а је:

ХасхМап не чува редослед понављања док је ТрееМап сачувајте ред коришћењем у поређењу са() метод или а компаратор постављен у конструктору ТрееМап-а.

Следећа табела описује разлике између ХасхМап-а и ТрееМап-а.

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

Излаз:

Разлика између ХасхМап-а и ТрееМап-а