Цомпарисон Цхарт
Основа за поређење | ХасхМап | ЛинкедХасхМап |
---|---|---|
Басиц | Редослед уметања у ХасхМап није сачуван. | Редослед уметања је сачуван у ЛинкедХасхМап. |
Структура података | ХасхМап користи ХасхТабле за складиштење мапа. | ЛинкедХасхМап користи ХасхТабле заједно са повезаном листом за складиштење мапе. |
Ектендс / Имплементс | ХасхМап проширује АбстрацтМап и имплементира Мап интерфејс. | ЛинкедХасхМап проширује Хасхмап. |
Версион | ХасхМап је уведен у ЈДК 2.0. | ЛинкедХасхМап је представљен у ЈДК 4.0. |
Оверхеад | Компаративно мање изнад главе. | Компаративно више оптерећења јер мора одржавати редослијед уноса карата. |
Дефиниција ХасхМап-а
ХасхМап је класа која се користи за креирање мапе. Она имплементира Мап Интерфаце. Такође проширује АбстрацтМап класу тако да може да користи хеш табелу за складиштење уноса у мапу. Уноси мапе су пар где је сваки кључ повезан са вредношћу. Кључ у уносу се користи за дохваћање вриједности, стога кључ мора бити јединствен. Зато дупли кључеви нису дозвољени у ХасхМап-у. Али кључ у сваком уносу мапе може имати другачији тип, тј. Кључеви у мапи креирани од стране ХасхМап-а могу бити хетерогени. Структура података коју ХасхМап користи за спремање мапе је хеш табела.
Редослед уноса ставки у ХасхМап није сачуван. Убацивање уноса у мапу креирану помоћу ХасхМап-а заснива се на хеш коду који се израчунава помоћу кључева у уносима. Ако сте грешком унели дупликат кључа у ХасхМап, он ће заменити претходну вредност тог кључа новом предложеном вредношћу и вратити стару вредност. Ако се не користи дупли кључ и нема замене, кључ се увек враћа Нулл. Да видимо како да додамо уносе у хасх мапу са следећим примером.
Хасхмап хм = нев Хасхмап (); хм.пут ("Ајаи", 275); хм.пут ("Вијаи", 250); хм.пут ("Јонни", 150); хм.пут ("Јордан", 200); Систем.оут.принтлн (хм); / * оутпут * / {Вијаи = 250, Јонни = 150, Ајаи = 275, Јордан = 200}
Као у горњем коду, можете видети да сам креирао објекат ХасхМап-а и додао уносе користећи путс метод, а када сам исписао ХасхМап објект, уноси се не штампају редоследом којим су уметнути. Дакле, не можете се претварати да ће се редослед уноса у ХасхМап вратити. ХасхМап користи све методе Мап интерфејса и АбстрацтМап класе и не уводи нове методе; има своје конструкторе. Подразумевани капацитет хасх мапе је 16, а задати коефицијент попуњености је 0.75 .
Дефиниција ЛинкедХасхМап
ЛинкедХасхМап је такође класа која се користи за креирање мапе. ЛинкедХасхМап проширује ХасхМап класу и касније је уведен у ХасхМап у ЈДК верзији 4.0. Бити дете класе ХасхМап класе ЛинкедХасхМап је потпуно исто као и ХасхМап класа укључујући конструкторе и методе. Али, ЛинкедХасхМап се разликује у смислу да одржава редослед уметања уноса у мапу. Структура података коју ЛинкедХасхМап користи за спремање мапе је повезана листа и хасх табела .
Поред метода које наслеђује ХасхМап, ЛинкедХасхМап уводи један нови метод који је ремовеЕлдестЕнтри () . Овај метод се користи за уклањање најстаријег уноса у мапи. Подразумевани капацитет ЛинкедХасхМап-а је 16, а подразумевани коефицијент попуњености је 0.75 што је такође слично ХасхМап класи.
Кључне разлике између ХасхМап и ЛинкедХасхМап у Јави
- Најважнија разлика је у томе што редослед уметања ХасхМап-а није сачуван, док је редослед уметања ЛинкедХасхМап очуван .
- Структура података коју ХасхМап користи за спремање елемената мапе је Хасхтабле . С друге стране, структура података коју користи ЛинкедХасхМап је Линкед лист и Хасхтабле .
- ХасхМап класа проширује АбстрацтМап класу и имплементира Мап интерфејс. Међутим, ЛинкедХасхМап класа је подређена класа ХасхМап класе, тј. ЛинкедХасхМап класа проширује ХасхМап класу.
- ХасхМап класа је уведена у ЈДК 2.0 верзији. Класа ЛинкедХасхМап је представљена касније у ЈДК 4.0 верзији.
- Компаративно ЛинкедХасхМап класа има више оптерећења од ХасхМап-а јер мора одржавати редослијед елемената уметнутих у мапу.
Закључак:
ЛинкедХасхМап се мора користити само тамо гдје смо забринути за редослијед елемената уметнутих у мапу.