Разлика между HashMap и Hashtable в Java
Съдържание
И двете HashMap и Hashtable се използват за представяне на a група от обекти които са представени в
Нека разгледаме таблицата за сравнение, показана по-долу, за да научим още няколко разлики между HashMap и Hashtable.
- Сравнителна диаграма
- дефиниция
- Ключови разлики
- прилики
- заключение
Сравнителна диаграма
Основа за сравнение | HashMap | Hashtable |
---|---|---|
Изпълнение / удължаване | Класът HashMap реализира Map интерфейс и разширява клас AbstractMap. | Hashtable разширява класа на речник Legacy, но, той е реконструиран и сега също така прилага интерфейс Map. |
синхронизация | HashMap не е синхронизиран и следователно обектът HashMap не е защитен с резба. | Hashtable е синхронизиран и следователно обектът на Hashtable е защитен с конци. |
Ключове / Value | Ключът може да върне Null само веднъж, но стойността може да върне Null произволно време. | Ключът не може да върне Null, тъй като се използва за получаване на хеш код, който ще се използва като индекс на хеш таблицата, нито стойността може да върне Null. |
Начална капацитет по подразбиране | Първоначалният първоначален капацитет на HashMap е 16. | Първоначалният първоначален капацитет на Hashtable е 11. |
преминаващи | HashMap се преминава от Iterator. | Подобно на клас клас Hashtable също не поддържа директно Iterator за преминаване и следователно, той използва Enumerator. |
Определение на HashMap
HashMap е клас, който реализира карта интерфейс и разширява AbstractMap клас използва хеш таблицата. Обектът на HashMap се отнася до колекция / набор от / * K представлява ключ, а V представлява стойност * / клас HashMap Първият конструктор е конструктор по подразбиране, който инициализира празен обект на HashMap с капацитет по подразбиране 16 и съотношение попълване по подразбиране 0,75. Вторият конструктор инициализира хеш картата със стойността на m. Третият конструктор създава хеш карта с първоначалния капацитет, съответстващ на стойността, предоставена в аргумента "капацитет". Четвъртият конструктор инициализира хеш картата с капацитет и съотношение на запълване, предоставени в параметрите. нека сега научим как да захранваме записите в хеш карта. Hashmap hm = нов Hashmap (); hm.put ("Аджай", 275); hm.put ("Vijay", 250); hm.put ("Джони", 150); hm.put ("Йордания", 200); System.out.ln (hm); / * изход * / {Vijay = 250, Джони = 150, Аджай = 275, Йордания = 200} В горния код можете да видите, че създадох празен HashMap обект хм с първоначален първоначален капацитет и съотношение попълване по подразбиране След това вмъкнах четири записа в хеш картата, използвайки метода put (K, V), който картографира ключа към стойността. Можете да забележите, че записите не са редактирани в последователност, в която ги захранвате, защото редът на въвеждане не е фиксиран. Сега, помислете за случай, в който вече имате запис Hashtable е клас, който разширява Речник клас, който е наследствен клас и е реинженериран за внедряване на карта интерфейс. Hashtable използва хеш таблицата като своя структура от данни. Hashtable е подобен на HashMap, тъй като тук също обектът на Hashtable се отнася до колекцията от записи, където всеки запис е двойка / * K указва ключа, а V определя стойността, свързана с ключа * / клас Hashtable В горния код първият конструктор е конструктор по подразбиране, който създава празен обект от клас Hashtable, неговият размер по подразбиране е 11, а коефициентът на запълване по подразбиране е 0,75. Вторият конструктор създава хеш таблица с размер, съответстващ на стойността, предоставена в параметъра „размер“. Третият конструктор създава хеш таблица с размер и съотношение на запълване, предоставени в параметъра. Четвъртият конструктор инициализира хеш таблицата със стойността m. Нека сега научим как да поставим Hashtable ht = нов Hashtable (); ht.put (нов hashCode (2), 275); ht.put (нов hashCode (12), 250); ht.put (нов hashCode (16), 150); ht.put (нов hashCode (8), 200); System.out.ln (ht); / * изход * / {12 = 250, 16 = 150,2y = 275, 8 = 200} В горния код създадох празен обект на Hashtable и вмъкнах четири записа, използвайки метода put (). Вътре поставен метод нарекох hashCode (), който изчислява и връща стойността на хеш кода, която ще действа като стойност на индекса за обект на въвеждане. Както можете да видите, не споменах размера на хеш таблицата, така че по подразбиране той ще бъде 11. Тук също редът на вмъкване не се запазва и следователно, когато редакционните записи не се появяват в последователност, в която са били подадени. HashMap е по-добър в изпълнение, тъй като обектите му са несинхронизирани и множество нишки могат да работят върху него едновременно и следователно е по-бърз от Hashtable.
Определение на Hashtable
прилики:
Заключение: