تفاوت کلیدی – TreeSet در مقابل HashSet
بیشتر زبان های برنامه نویسی از آرایه ها پشتیبانی می کنند. این یک ساختار داده است که برای ذخیره چندین عنصر از یک نوع داده استفاده می شود. اگر آرایه ای برای شش عنصر اعلام شده باشد، نمی توان از آن برای ذخیره ده عنصر استفاده کرد. بنابراین، آرایه ها پویا نیستند و نمی توانند اندازه آرایه را پس از اعلان تغییر دهند. زبان های برنامه نویسی مانند جاوا از مجموعه هایی پشتیبانی می کنند که برای ذخیره سازی داده ها به صورت پویا استفاده می شوند. مجموعه ها از عملیات هایی مانند افزودن عناصر و حذف عناصر پشتیبانی می کنند. تعدادی رابط و کلاس در سلسله مراتب مجموعه وجود دارد. رابط پایه رابط مجموعه است. Set رابطی است که رابط مجموعه را گسترش می دهد. اجازه تکرار نمی دهد. TreeSet و HashSet دو کلاس در سلسله مراتب مجموعه هستند و هر دو رابط Set را پیاده سازی می کنند. TreeSet کلاسی است که رابط Set را پیاده سازی می کند و برای ذخیره عناصر منحصر به فرد به ترتیب صعودی استفاده می شود. HashSet کلاسی است که رابط Set را پیاده سازی می کند و برای ذخیره عناصر منحصر به فرد با استفاده از مکانیزم Hashing استفاده می شود. تفاوت اصلی بین TreeSet و HashSet این است که TreeSet عناصر را به ترتیب صعودی ذخیره می کند در حالی که HashSet عناصر را به ترتیب صعودی ذخیره نمی کند. هر دو TreeSet و HashSet فقط عناصر منحصر به فرد را ذخیره می کنند.
TreeSet چیست؟
کلاس TreeSet رابط NavigableSet را پیاده سازی می کند. رابط NavigableSet رابط های SortedSet، Set، Collection و Iterable را به ترتیب سلسله مراتبی گسترش می دهد. TreeSet همیشه ترتیب صعودی را حفظ می کند. اگر عناصر به ترتیب B، A، C درج شده باشند، به صورت A، B، C ذخیره می شوند. روش هایی مانند add ()، remove () را می توان با شی TreeSet استفاده کرد.از متد add می توان برای افزودن یک عنصر استفاده کرد. روش remove برای حذف یک عنصر از مجموعه استفاده می شود. اینها چند روش هستند که میتوان با TreeSet استفاده کرد.
شکل 01: برنامه با TreeSet
طبق برنامه فوق، یک شی از نوع TreeSet ایجاد می شود. عناصر داده رشته ای با استفاده از متد add به آن شی اضافه می شوند. ترتیب داده های درج شده A، D، A، B، C، D است. با استفاده از تکرار کننده، مقادیر ذخیره شده روی صفحه چاپ می شوند. خروجی A، B، C، D است. با وجود اینکه دو حرف A و دو حرف D وجود دارد، خروجی هر کدام یک A و یک D را نمایش می دهد. بنابراین، TreeSet عناصر منحصر به فرد را ذخیره می کند. ترتیب درج خاصی وجود ندارد، اما هنگام مشاهده خروجی، می توان دید که TreeSet ترتیب صعودی عناصر را حفظ می کند.
HashSet چیست؟
کلاس HashSet کلاس AbstractSet را گسترش می دهد که Set Interface را پیاده سازی می کند. رابط Set به ترتیب سلسله مراتبی واسط های Collection و Iterable را به ارث می برد. در HashSet هیچ تضمینی وجود ندارد که عناصر ترتیب صعودی و ترتیب درج شده را حفظ کنند. اگر ترتیب درجشده A، B، C بود، مقادیر ممکن است بهصورت C، A، B ذخیره شوند. ترتیب ذخیرهسازی نیز میتواند A، B، C باشد، اما هیچ تضمینی وجود ندارد که ترتیب درج شده یا ترتیب صعودی حفظ شود.
شکل 02: برنامه با HashSet
طبق برنامه فوق، یک شی از نوع HashSet ایجاد می شود. عناصر داده رشته ای با استفاده از متد add به آن شی اضافه می شوند. ترتیب داده های درج شده L، R، M، M، R، L است. با استفاده از تکرار کننده، مقادیر ذخیره شده روی صفحه چاپ می شوند.خروجی R L M است. با وجود اینکه از هر کدام دو حرف L، R و M وجود دارد، تنها یک حرف از هر کدام نمایش داده می شود. بنابراین، HashSet عناصر منحصر به فرد را ذخیره می کند. هنگام مشاهده خروجی، مشاهده می شود که ترتیب صعودی وجود ندارد یا ترتیب درج شده حفظ می شود.
شباهتهای TreeSet و HashSet چیست؟
- هر دو TreeSet و HashSet کلاس هایی هستند که به سلسله مراتب مجموعه تعلق دارند.
- هر دو TreeSet و HashSet فقط عناصر منحصر به فرد را ذخیره می کنند.
- هر دو TreeSet و HashSet می توانند برای ذخیره و دستکاری بسیاری از عناصر استفاده شوند.
- هر دو TreeSet و HashSet ترتیب درج شده را حفظ نمی کنند.
تفاوت بین TreeSet و HashSet چیست؟
TreeSet در مقابل HashSet |
|
TreeSet یک کلاس در سلسله مراتب مجموعه است که برای ذخیره عناصر منحصر به فرد به ترتیب صعودی استفاده می شود. | HashSet یک کلاس در سلسله مراتب مجموعه است که برای ذخیره عناصر منحصر به فرد با استفاده از مکانیزم Hashing استفاده می شود. |
ذخیرهسازی عنصر | |
TreeSet عناصر را به ترتیب صعودی ذخیره می کند. | HashSet عناصر را به ترتیب صعودی ذخیره نمی کند. |
خلاصه - TreeSet در مقابل HashSet
در برنامه نویسی، لازم است عناصر داده به صورت پویا ذخیره شوند. زبان های برنامه نویسی مانند جاوا از مجموعه ها برای دستیابی به این کار پشتیبانی می کنند. تعدادی رابط و کلاس در سلسله مراتب مجموعه وجود دارد. TreeSet و HashSet دو کلاس در سلسله مراتب مجموعه هستند. هر دو رابط Set را پیاده سازی می کنند. TreeSet کلاسی است که رابط Set را پیاده سازی می کند و برای ذخیره عناصر منحصر به فرد به ترتیب صعودی استفاده می شود. HashSet کلاسی است که رابط Set را پیاده سازی می کند و برای ذخیره عناصر منحصر به فرد با استفاده از مکانیزم Hashing استفاده می شود.تفاوت TreeSet و HashSet در این است که TreeSet عناصر را به ترتیب صعودی ذخیره می کند در حالی که HashSet عناصر را به ترتیب صعودی ذخیره نمی کند. این مقاله تفاوت بین TreeSet و HashSet را مورد بحث قرار داد.