Java Developer | digipay
HashMap VS TreeMap VS Set
فرق بین hashMap , treeMap , set چیست ؟

در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.
این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .
StringBuilder vs StringBuffer vs String
در جاوا، HashMap، TreeMap و Set همه برای ذخیره مجموعهای از دادهها استفاده میشوند، اما هر کدام ویژگیها و کاربردهای خاص خود را دارند. برای درک بهتر این تفاوتها، بیایید هر یک را به طور جداگانه بررسی کنیم:
HashMap
- تعریف: HashMap یک پیادهسازی از رابط Map است که از یک جدول هش برای ذخیره دادهها استفاده میکند.
- ویژگیها:
سرعت: عملیات جستجو، درج و حذف در HashMap به طور متوسط زمان ثابت (O(1)) دارند که آن را
بسیار سریع میکند.
ترتیب: عناصر در HashMap به صورت نامنظم ذخیره میشوند.
کلیدها: کلیدها باید منحصر به فرد باشند و میتوانند null باشند.
مقدارها: مقدارها میتوانند تکراری باشند و میتوانند null باشند.
- کاربرد: زمانی که به سرعت دسترسی به عناصر نیاز دارید و ترتیب ذخیرهسازی اهمیت ندارد، از HashMap استفاده میشود.
TreeMap
- تعریف: TreeMap یک پیادهسازی دیگر از رابط Map است که از یک درخت برای ذخیره دادهها استفاده میکند.
- ویژگیها:
سرعت: عملیات جستجو، درج و حذف در TreeMap زمان لگاریتمی (O(log n)) دارند.
ترتیب: عناصر در TreeMap بر اساس کلیدهای طبیعی یا یک مقایسهکننده سفارشی مرتب میشوند.
کلیدها: کلیدها باید منحصر به فرد باشند و قابل مقایسه باشند.
مقدارها: مقدارها میتوانند تکراری باشند و میتوانند null باشند.
- کاربرد: زمانی که به یک مجموعه مرتب شده نیاز دارید و ترتیب ذخیرهسازی مهم است، از TreeMap استفاده میشود.
Set
- تعریف: Set یک رابط در جاوا است که مجموعهای از عناصر منحصر به فرد را نمایش میدهد.
- ویژگیها:
عناصر منحصر به فرد: هر عنصر فقط یک بار میتواند در یک Set وجود داشته باشد.
ترتیب: ترتیب عناصر در Set مشخص نیست (مگر اینکه از یک پیادهسازی خاص مانند TreeSet استفاده
شود).
- پیادهسازیها:
HashSet:
بر اساس HashMap ساخته شده و سریعترین پیادهسازی Set است.
TreeSet:
بر اساس TreeMap ساخته شده و عناصر را به صورت مرتب شده ذخیره میکند.
جدول مقایسه :

چه زمانی از کدام یک استفاده کنیم؟
- HashMap: زمانی که به سرعت دسترسی به عناصر نیاز دارید و ترتیب ذخیرهسازی اهمیت ندارد.
- TreeMap: زمانی که به یک مجموعه مرتب شده نیاز دارید و ترتیب ذخیرهسازی مهم است.
- HashSet: زمانی که به یک مجموعه منحصر به فرد نیاز دارید و سرعت مهمترین عامل است.
- TreeSet: زمانی که به یک مجموعه منحصر به فرد و مرتب شده نیاز دارید.
مثال خیلی ساده :
// HashMap
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
// TreeMap
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("apple", 1);
treeMap.put("banana", 2);
// HashSet
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
در نهایت، انتخاب بین HashMap، TreeMap و Set به نیازهای خاص برنامه شما بستگی دارد.
منتظر نگاه های زیباتون هستم .
موفق و پیروز باشید.
مطلبی دیگر از این انتشارات
How to do logging in Spring Boot?
مطلبی دیگر از این انتشارات
using JUnit5 and Mockito (مفاهیم کلی تست)
مطلبی دیگر از این انتشارات
memoryHeap and memoryLeak in java