صادق خانزادی
صادق خانزادی
خواندن ۳ دقیقه·۴ ماه پیش

HashMap VS TreeMap VS Set

فرق بین hashMap , treeMap , set چیست ؟


در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.

این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .

Mutable VS Immutable in java

StringBuilder vs StringBuffer vs String

Integer vs int

HashMap vs TreeMap vs Set

Heap And Stack

Memory Heap vs Memory Leak

Integer Constant Pool

Integer Pool vs String Pool

Ternary Operator

Autoboxing



در جاوا، 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(&quotapple&quot, 1); map.put(&quotbanana&quot, 2); // TreeMap Map<String, Integer> treeMap = new TreeMap<>(); treeMap.put(&quotapple&quot, 1); treeMap.put(&quotbanana&quot, 2); // HashSet Set<String> set = new HashSet<>(); set.add(&quotapple&quot); set.add(&quotbanana&quot);

در نهایت، انتخاب بین HashMap، TreeMap و Set به نیازهای خاص برنامه شما بستگی دارد.


منتظر نگاه های زیباتون هستم .

موفق و پیروز باشید.

setjavacollection
Java Developer - Technical Team Lead At Dotin
شاید از این پست‌ها خوشتان بیاید