Када научите нови рачунарски језик, једна од првих ствари које имате тенденцију да се пита је како радити са великим групама података. Ова тема је често обрађена под темом „Структуре података“. Ако копате дубље, морате заобићи теме попут повезаних листа, редова, хрпе и бинарних стабала међу многим другим структурама података. У Јави су ове структуре део оквира Јава Цоллецтион Цоллецтион. Колекција није ништа друго него врста структуре података која се односи на груписање више елемената података, а Јава Цоллецтионс Фрамеворк стандардизује начин на који се тим групама објеката рукује. У ствари, оквир колекције је осмишљен тако да испуни неколико циљева.
Цео оквир колекције дизајниран је око скупа стандардних интерфејса. Неколико стандардних имплементација, као што су ЛинкедЛист, ХасхСет и ТрееСет, пружа ове интерфејсе као што можда јесте. Поред тога, такође можете имплементирати и своју колекцију ако желите. Међутим, поред колекција, оквир дефинише и неколико интерфејса и класа карата. Јава садржи три имплементације мапе опште намене - ХасхМап, ТрееМап и ЛинкедХасхМап - које спремају парове кључ / вредност. Иако мапе нису технички колекције, оне су у потпуности интегрисане у колекције. У ствари, карте се фокусирају на групе повезивања објеката. Овај чланак сажима кључне разлике између ХасхМап-а и ХасхСет-а.
ХасхМап је најчешће коришћена имплементација интерфејса Мап који пружа основни мап кључ / вредност где су елементи неуређени. Она користи посебну вредност која се зове хасх код, уместо спорог претраживања кључа. Хасх код је начин да се информације у предметном предмету узму и претворе у "релативно јединствен" инт за тај објект. Једноставно ради на принципу хасхинга што значи да користи хасх функцију за мапирање идентифицирајућих вриједности. Баш као што Вецтор и Стацк имају замјене у АрраиЛист-у и ЛинкедЛист-у, Хасхтабле има замјену у ХасхМап-у. То проширује АбстрацтМап за имплементацију интерфејса Мап користећи интерну Хасхтабле репрезентацију. И слично као и друге имплементације опште намене, ХасхМап подржава опционе методе Мап, омогућава нулте вредности и није синхронизован.
ХасхСет је један од чланова Јава Цоллецтионс Фрамеворк-а који имплементира Сет интерфејс, потпомогнут хасх табелом који је у ствари инстанца ХасхМап. Као што име имплицира, имплементира га хасх табела, низ у којем су елементи похрањени на позицији која произлази из њиховог садржаја. За разлику од Мап-а, Сет је тачно колекција с потпуно истим интерфејсом, тако да нема неке додатне функционалности као што је то случај са две различите листе. ХасхСет користи хасхинг функцију која је дизајнирана посебно за брзе претраге. То је неуређена колекција јединствених објеката која не може сачувати дупликате вредности. ХасхСет проширује класу АбстрацтСет која имплементира Сет интерфејс. Међутим, ХасхСет не дефинише никакве друге методе осим оних које пружају суперкласе и интерфејси.
ХасхМап је најчешће коришћена имплементација интерфејса Мап који пружа основни мап кључ / вредност где су елементи неуређени. Једноставно ради на принципу хасхинга што значи да користи хасх функцију за мапирање идентифицирајућих вриједности. Са друге стране, ХасхСет је један од чланова Јава Цоллецтионс Фрамеворк-а који имплементира Сет интерфејс, потпомогнут хасх табелом који је у ствари пример ХасхМап-а. Једноставно говорећи, ХасхМап имплементира Мап интерфејс, док ХасхСет имплементира Сет интерфејс.
ХасхСет креира колекцију која користи хасх табелу за складиштење. Хасх табела чува информације користећи методу која се зове хасхинг. ХасхСет користи функцију распршивања, која је посебно дизајнирана за брзе претраге, за смештање елемената или вредности. Већина функционалности ХасхСет-а обезбеђује се путем суперкласе АбстрацтЦоллецтион и АбстрацтСет, коју ХасхСет дели са ТрееСет-ом. ХасхМап проширује АбстрацтМап за имплементацију интерфејса Мап користећи интерну Хасхтабле репрезентацију. Обје класе нису синхронизоване што значи да нису погодне за сигурне операције.
Будући да Мап не подржава дупликат кључеве, ХасхМап не дозвољава дупликат кључева, али је дозвољено да имају дупликате вредности. То значи да дупликатне вредности могу постојати у ХасхМап-у, али колекцију можете користити као вредност према неком кључу. Сваки кључ мора бити јединствен у ХасхМап-у и не може се дозволити да један кључ садржи више од једне вредности. ХасхСет, с друге стране, не може имати дупликат елемената само дефиницијом скупа, што значи да не можете спремати дупликате у ХасхСет. ХасхМап дозвољава само један нулл кључ, али дозвољава било који број нулл вредности, док ХасхСет дозвољава само једну нулл вредност.
ХасхМап ради на принципу хасхинг-а, што значи да користи хасх функцију за мапирање препознавања вриједности интерно користећи алгоритам хасхинг-а како би се омогућило лако проналажење. Прави хасх механизам увијек враћа исти хасхЦоде () када се примијени на исти објект. ХасхСет, с друге стране, интерно користи ХасхМап као подупирућу структуру података за додавање или чување објеката. То значи да када се створи објект ХасхСет-а, он ће креирати објект ХасхМап-а.
Иако и ХасхМап и ХасхСет нису синхронизовани што значи да нису погодни за сигурне операције и представљају потпуно различите конструкције, они пружају сталне временске перформансе за основне операције као што су додавање, уклањање елемента итд. Док је ХасхМап општа наменска имплементација интерфејс карте који чува парове кључ / вредност, ХасхСет је имплементација Сет интерфејса. ХасхСет користи ХасхМап за подршку имплементације. Међутим, ХасхМап користи хасхинг принцип и користи га за брзо тражење кључа.