آشنایی با تفاوت های HashMap با TreeMap

مقدمه

سلام به همه پی وی لرنی های عزیز!
HashMap بخشی از مجموعه جاوا است که اجرای اولیه رابط نقشه جاوا را فراهم می کند.
داده ها در جفت های (Key، Value) ذخیره می شوند.
برای دستیابی به یک مقدار باید کلید آن را بدانید.
HashMap به دلیل استفاده از تکنیک Hashing به HashMap معروف است.
TreeMap برای پیاده سازی Map Interface و NavigableMap با Abstract Class استفاده می شود.
نقشه بسته به نوع سازنده مورد استفاده ، طبق ترتیب طبیعی کلیدهای آن، یا مقایسه ای که در زمان تهیه نقشه تهیه شده است، طبقه بندی می شود.
در ایم مقاله قصد داریم که آشنایی با تفاوت های HashMap با TreeMap بپردازیم.

آشنایی با تفاوت های HashMap با TreeMap

شباهت ها بین HashMap و TreeMap

بین hashmap و treemap شباهت های زیر وجود دارد:

یک

هر دو کلاس HashMap و TreeMap رابط های Serializable و Cloneable را پیاده سازی می کنند.

دو

هر دو HashMap و TreeMap کلاس <AbstractMap <K، V را گسترش می دهند.

سه

هر دو کلاس HashMap و TreeMap بر روی جفت های با ارزش اصلی کار می کنند.

چهار

هر دو HashMap و TreeMap مجموعه های غیر هماهنگ هستند.

پنج

هر دو HashMap و TreeMap مجموعه های سریعی را از دست می دهند.

شش

هر دو پیاده سازی بخشی از چارچوب مجموعه و داده های موجود در جفت های Key-Value هستند.

برنامه جاوا به نمایش HashMap و TreeMap می پردازد

در ادامه یک برنامه جاوا وجود دارد که نشان می دهد چگونه عناصر قرار داده شده و از hashmap بازیابی می شوند.

مثال : 

خروجی

خروجی کدهای فوق ( آشنایی با تفاوت های HashMap با TreeMap )

خروجی کدهای فوق ( آشنایی با تفاوت های HashMap با TreeMap )

از خروجی مشخص است که hasmap هیچ نظمی را حفظ نمی کند.
در اینجا یک برنامه جاوا وجود دارد که نشان می دهد چگونه عناصر قرار داده شده و بازیابی می شوند.

کد:

مثال : 

خروجی

خروجی کدهای فوق ( آشنایی با تفاوت های HashMap با TreeMap )

خروجی کدهای فوق ( آشنایی با تفاوت های HashMap با TreeMap )

از خروجی مشاهده می شود که کلیدها به ترتیب طبیعی طبقه بندی شده اند.
از این رو Treemap نظم مرتب شده ای را حفظ می کند.

تفاوت اصلی HashMap و TreeMap

در ادامه نکات کلیدی در خصوص تفاوت HashMap و TreeMap ارائه شده است.

ساختار و پیاده سازی ( Structure and Implementation )

Hash Map یک اجرای جدول مبتنی بر هش است.
Hash Map کلاس Abstract Map را گسترش می دهد و رابط Map را پیاده سازی می کند.
Hash Map بر اساس اصل هش کار می کند.
اجرای نقشه به عنوان جدول bucketed hash عمل می کند، اما وقتی اندازه buckets خیلی بزرگ شود ، آنها به گره های Tree تبدیل می شوند که هر یک ساختار مشابهی با گره های TreeMap دارند.
TreeMap کلاس Abstract Map را گسترش می دهد و یک رابط Navigable Map را پیاده سازی می کند.
ساختار داده اصلی برای treemap یک Red-Black tree است.

ترتیب تقلید ( Iteration Order )

ترتیب تقلید Hash Map تعریف نشده است در حالی که عناصر یک TreeMap به ترتیب طبیعی یا به ترتیب دلخواه در آورده می شوند.

کارکرد ( Performance )

از آنجا که Hashmap یک پیاده سازی مبتنی بر hashtable است، عملکرد زمان ثابت را ارائه می دهد که برابر با (O (1 برای اکثر عملیات مشترک است.
زمان لازم برای جستجوی یک عنصر در نقشه هش (O (1 است.
اما اگر یک اجرای نادرست در hasmap وجود داشته باشد، ممکن است منجر به کاهش اضافی حافظه و کاهش عملکرد شود.
TreeMap عملکرد ((O (log (n را ارائه می دهد.
از آنجا که hasmap بر پایه hashtable است، به یک حافظه متناوب نیاز دارد در حالی که یک نقشه برداری فقط از مقدار حافظه مورد نیاز برای نگهداری موارد استفاده می کند.
از این رو HashMap از نظر زمان بهره برداری مقرون به صرفه تر است اما treemap نسبت به HashMap از نظر فضا کارایی بیشتری دارد.

Null Handling

HashMap تقریباً یک null key و بسیاری از مقادیر null را در اختیار شما قرار می دهد ، در حالی که در یک treemap اگرچه مقادیر null است، نمی توان از null key استفاده کرد.

مقایسه کلی

در جدول زیر می توانید تفاوت بین hashmap و treemap را به صورت کلی مشاهده نمایید.

مبنای تفاوتHashMapTreeMap
سینتکسکلاس عمومی HashMap گسترش می یابد و AbstractMap ، Cloneable ، Serializable را پیاده سازی می کندکلاس عمومی TreeMap گسترش می یابد و implementsNavigableMap ، Cloneable ، Serializable
ترتیبHashMap هیچ نظمی برای عناصر ارائه نمی دهد.عناصر به ترتیب طبیعی یا سفارشی نظم داده می شوند.
سرعتسریعکند
Null Keys و مقادیرتقریباً به یک کلید به عنوان مقادیر null وmultiple null اجازه می دهد.null را به عنوان کلید نمی پذیرد اما اجازه ی multiple null را می دهد.
میزان مصرف حافظه
HashMap به دلیل جدول زیرین هاش حافظه بیشتری مصرف می کند.در مقایسه با HashMap حافظه کمتری مصرف می کند.
کاراییفقط ویژگی های اساسی را ارائه می دهد.ویژگی های بهتری را ارائه می نماید.
مقایسه متود های مورد استفادهدر اصل برای مقایسه کلیدها از روش () equals استفاده می کند.از متود () compare و یا () compareTo برای مقایسه کلید ها استفاده می کند.
رابط اجراMap, Serializable و CloneableNavigable Map, Serializable و Cloneable
عملکردعملکرد (O (1 را ارائه می دهد.عملکرد (O (log n را ارائه می دهد.
ساختار داده هااز جدول هش به عنوان ساختار داده استفاده می کند.استفاده از Red-Black Tree برای ذخیره سازی داده ها را ایجاد می کند.
عناصر همگن و ناهمگنعناصر همگن و همچنین ناهمگن را امکان پذیر می سازد زیرا هیچ گونه مرتب سازی ای انجام نمی دهد.به عنوان عناصر همگن اجازه می دهد که مرتب سازی بر آن ها انجام شود.
Use Casesوقتی مورد استفاده قرار می گیرد که نیاز به  به جفت ارزش کلیدی برای ترتیب دهی نداشته باشیم.وقتی مورد استفاده قرار می گیرد که نیاز به  به جفت ارزش کلیدی یک map برای ترتیب دهی داشته باشیم.

کلام آخر

از مطالب موجود در این مقاله و آشنایی با تفاوت های HashMap با TreeMap می توان فهمید که hashmap  یک اجرای کلی واسط نقشه است که عملکرد (O (1 را فراهم می کند در حالی که Treemap عملکرد (O (log (n) را فراهم می نماید.
از این رو HashMap معمولاً سریعتر از TreeMap است.

به پایان این مقاله آموزشی رسیده ایم.
امیدوارم مطالب این مقاله برای شما مفید بوده باشد.
با پی وی لرن همراه باشید.

به اشتراک بگذارید