Pagkakaiba sa pagitan ng HashMap at Hashtable sa Java
Nilalaman
Ang HashMap at Hashtable, pareho ay ginagamit upang kumatawan sa isang pangkat ng mga bagay na kinakatawan sa
Tingnan ang tsart sa paghahambing na ipinakita sa ibaba upang malaman ang ilang higit pang mga pagkakaiba sa pagitan ng HashMap at Hashtable.
- Tsart ng paghahambing
- Kahulugan
- Pangunahing Pagkakaiba
- Pagkakatulad
- Konklusyon
Tsart ng paghahambing
Batayan para sa Paghahambing | HashMap | Hinahangaan |
---|---|---|
Pagpapatupad / Palawakin | Ang klase ng HashMap ay nagpapatupad ng interface ng Mapa at nagpapalawak ng isang klase ng AbstractMap. | Ang Hashtable ay umaabot ng Class Legacy ng kategorya ngunit, ito ay muling inhinyero at ngayon ipinatupad din nito ang interface ng Map. |
Pag-synchronize | Ang HashMap ay hindi nai-synchronise, at samakatuwid, ang object ng HashMap ay hindi sinulid ligtas. | Ang Hashtable ay naka-synchronize, at samakatuwid, ang object ng Hashtable ay ligtas na ang thread. |
Mga Susi / Halaga | Ang isang susi ay maaaring ibalik ang Null isang beses lamang, ngunit ang isang halaga ay maaaring ibalik si Null sa anumang bilang ng oras. | Ang isang susi ay hindi maibabalik kay Null dahil ginagamit ito upang makuha ang hash code na gagamitin bilang isang indeks ng talahanayan ng hash, o ang isang halaga ay hindi makababalik kay Null. |
Default na Paunang Kakayahan | Ang default na paunang kapasidad ng HashMap ay 16. | Ang default na paunang kapasidad ng Hashtable ay 11. |
Traversing | Ang HashMap ay binabagtas ni Iterator. | Tulad ng klase ng Mapa ay hindi rin direktang sinusuportahan ng Hashtable ang Iterator para sa pagtaguyod at samakatuwid, gumagamit ito ng Enumerator. |
Kahulugan ng HashMap
Ang HashMap ay isang klase na nagpapatupad ng Map interface at pinalawak ang AbstractMap ang klase ay gumagamit ng hash table. Ang object ng HashMap ay tumutukoy sa isang koleksyon / set ng Ang K ay kumakatawan sa susi, at ang V ay kumakatawan sa halaga * / klase HashMap Ang unang tagapagtayo ay isang default na tagapagtayo na nagsisimula sa isang walang laman na bagay ng HashMap na may isang default na kapasidad ng 16 at default na ratio ng punong 0.75. Ang pangalawang tagabuo ay paunang-una ang hash map na may halaga ng m. Ang ikatlong tagabuo ay lumilikha ng isang mapa ng hash na may paunang kapasidad na nauugnay sa halaga na ibinigay sa argumentong "kapasidad". Ang pang-apat na konstruksyon ay nag-uumpisa sa hash map na may isang kapasidad at isang punong ratio na ibinigay sa mga parameter. alamin natin ngayon kung paano pakainin ang mga entry sa isang mapa ng hash. Hashmap hm = bagong Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} Sa itaas na code, makikita mo na lumikha ako ng isang walang laman na bagay na HashMap hm na may default na paunang kapasidad at default na ratio ng punan. Pagkatapos ay ipinasok ko ang apat na mga entry sa mapa ng hash gamit ang met (K, V) na pamamaraan na naglalagay ng mapa sa susi. Maaari mong obserbahan na ang mga entry ay hindi nai-edit sa isang pagkakasunud-sunod na pinapakain mo ang mga ito dahil hindi maayos ang insertion. Ngayon, isaalang-alang ang isang kaso na mayroon ka nang isang entry Ang Hashtable ay isang klase na nagpapalawak ng Diksyonaryo klase na kung saan ay isang pamana ng legacy at muling nag-iisa upang maipatupad ang Map interface. Ginagamit ng Hashtable ang talahanayan ng hash bilang istraktura ng data nito. Ang Hashtable ay katulad ng HashMap dahil dito din ang object ng Hashtable ay tumutukoy sa koleksyon ng mga entry kung saan ang bawat entry ay isang pares ng / * K tinukoy ang susi at tinukoy ng V ang halaga na nauugnay sa susi * / klase ng Hashtable Sa itaas na code, ang unang tagabuo ay isang default na tagapagtayo na lumilikha ng isang walang laman na bagay ng isang klase ng Hashtable, ang laki ng default na ito ay 11 at ang default na ratio ng fill ay 0.75. Ang ikalawang tagabuo ay lumilikha ng isang talahanayan ng hash na may sukat na nauugnay sa halaga na ibinigay sa "laki" ng parameter. Ang ikatlong tagapagtayo ay lumilikha ng isang talahanayan ng hash na may sukat at isang ratio ng punan na ibinigay sa parameter. Ang pang-apat na tagabuo ay paunang-una ang hash table na may halaga m. Alamin natin ngayon kung paano ipasok ang Hashtable ht = bagong Hashtable (); ht.put (bagong hashCode (2), 275); ht.put (bagong hashCode (12), 250); ht.put (bagong hashCode (16), 150); ht.put (bagong hashCode (8), 200); System.out.ln (ht); / * output * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Sa itaas na code, gumawa ako ng isang walang laman na bagay ng Hashtable at ipinasok ang apat na mga entry gamit ang ilagay () na pamamaraan. Sa loob ng paraan ng pagtawag ay tinawag ko ang hashCode () na nakikipagkuwenta at ibabalik ang halaga ng hash code na kikilos bilang halaga ng index para sa pagpasok ng object. Tulad ng nakikita mo ay hindi ko nabanggit ang laki ng hash table kaya sa default ay magiging 11. Dito rin, ang pagpasok ng order ay hindi napanatili at samakatuwid, kapag ang mga entry sa ed ay hindi lumitaw sa pagkakasunud-sunod ay pinapakain ito. Ang HashMap ay mas mahusay sa pagganap dahil ang mga bagay nito ay hindi ma-synchronise at maraming mga thread ay maaaring gumana sa parehong oras at sa gayon, mas mabilis ito kaysa sa Hashtable.Kahulugan ng Hashtable
Pagkakatulad:
Konklusyon: