رابط مجموعه – بررسی اجمالی سریع

رابط مجموعه بخشی از چارچوب مجموعههای جاوا است که یک معماری یکپارچه برای ذخیره و دستکاری مجموعههای اشیا ارائه میدهد. این رابط ریشه در سلسله مراتب است و روش های اساسی را برای افزودن، حذف و بازرسی عناصر در یک مجموعه ارائه می دهد.تصویر را از اینجا دانلود کنید
واسط مجموعه چندین زیرواسط دارد که انواع مختلفی از مجموعه ها را مشخص می کند که هر کدام دارای ویژگی های خاصی هستند:
فهرست:مجموعه سفارش داده شده (همچنین به عنوان یک دنباله شناخته می شود). لیست ها می توانند حاوی عناصر تکراری باشند. برخی از پیاده سازی های رایج عبارتند از ArrayList، LinkedList و Vector.
تنظیم:مجموعه ای که نمی تواند حاوی عناصر تکراری باشد. این توسط کلاسهایی مانند HashSet، LinkedHashSet و TreeSet مدلسازی میشود.
صف: مجموعه ای که برای نگهداری عناصر قبل از پردازش طراحی شده است. صفها معمولاً، اما لزوماً عناصر را به روش FIFO (اول در اولین بیرون) مرتب میکنند. به عنوان مثال می توان به PriorityQueue و LinkedList (که لیست را نیز پیاده سازی می کند) اشاره کرد.
از این رو: یک صف دو انتها که اجازه می دهد عناصر از هر دو سر اضافه یا حذف شوند. به عنوان مثال می توان به ArrayDeque و LinkedList اشاره کرد.
فهرست رابط
ArrayList:
- دسترسی تصادفی به عناصر را فراهم می کند.
- تکرار سریع و عملیات اندازه.
- برای درج و حذف ناکارآمد، به جز در انتهای لیست.
- هماهنگ نشده است.
List arrayList = new ArrayList<>();
arrayList.add("Apple");
arrayList.add("Banana");
لیست پیوندی:
- پیاده سازی لیست با پیوند دوگانه.
- کارآمد برای درج و حذف.
- هر دو رابط List و Deque را پیاده سازی می کند.
- هماهنگ نشده است.
List linkedList = new LinkedList<>();
linkedList.add("Apple");
linkedList.add("Banana");
وکتور:
- همگام و ایمن با نخ.
- معمولاً به دلیل سربار همگام سازی کندتر است.
- از یک آرایه پویا برای ذخیره عناصر استفاده می کند.
- شمارش پشتیبانی (رابط قدیمی)
List vector = new Vector<>();
vector.add("Apple");
vector.add("Banana");
تنظیم رابط
HashSet:
- با پشتوانه یک جدول هش.
- عناصر را در HashTable بر اساس ترتیب کد هش ذخیره می کند.
- هیچ تضمینی در مورد ترتیب کد هش عناصر وجود ندارد. (بنابراین ترتیب تصادفی آن)
- به عناصر تهی اجازه می دهد.
- تکرار اجازه نمی دهد
Set hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
LinkedHashSet:
- یک لیست پیوندی از ورودیهای مجموعه را به ترتیبی که درج شدهاند، حفظ میکند.
- ترتیب تکرار قابل پیش بینی را ارائه می دهد.
- تکرار اجازه نمی دهد
Set linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add("Apple");
linkedHashSet.add("Banana");
مجموعه درختی:
- بر اساس ترتیب طبیعی عناصر آن یا توسط مقایسه کننده ای که در زمان ایجاد مجموعه ارائه شده است، مرتب شده است.
- به صورت پیش فرض به ترتیب صعودی مرتب شده است.
- NavigableSet را پیاده سازی می کند.
- اجازه تکرار و NULL را نمی دهد (زیرا به طور پیش فرض عناصر را با استفاده از مقایسه کننده به ترتیب صعودی مرتب می کند. بنابراین، اگر مقادیر NULL در مقایسه وجود داشته باشد، استثنا ایجاد می کند).
Set treeSet = new TreeSet<>();
treeSet.add("Apple");
treeSet.add("Banana");
رابط صف
صف اولویت:
- یک صف اولویت نامحدود بر اساس یک پشته اولویت.
- عناصر را بر اساس ترتیب طبیعی آنها یا توسط یک مقایسه کننده ارائه شده در زمان ساخت صف سفارش می دهد.
Queue priorityQueue = new PriorityQueue<>();
priorityQueue.add("Apple");
priorityQueue.add("Banana");
لیست پیوندی:
- هر دو رابط List و Deque را پیاده سازی می کند.
- می توان با استفاده از روش هایی مانند پیشنهاد، نظرسنجی و پیک به عنوان صف استفاده کرد.
Queue linkedQueue = new LinkedList<>();
linkedQueue.offer("Apple");
linkedQueue.offer("Banana");
رابط Deque
ArrayDeque:
- اجرای آرایه قابل تغییر اندازه رابط Deque.
- ایمن برای نخ نیست.
- سریعتر از LinkedList برای افزودن و حذف عناصر در هر دو انتها.
Deque arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst("Apple");
arrayDeque.addLast("Banana");
لیست پیوندی:
- پیاده سازی لیست پیوندی دوگانه رابط Deque.
Deque linkedDeque = new LinkedList<>();
linkedDeque.addFirst("Apple");
linkedDeque.addLast("Banana");
رابط مجموعه و پیاده سازی های مختلف آن چارچوبی قوی برای کار با گروه هایی از اشیاء در جاوا فراهم می کند. درک تفاوت بین انواع مجموعه، پیاده سازی آنها و سناریوهای استفاده از آنها برای برنامه نویسی موثر و کارآمد بسیار مهم است.
در صورت نیاز به نسخه دقیق تری کامنت کنید.👇
بازخورد
بازخورد شما برای ما حائز اهمیت است. اگر اصلاح یا پیشنهادی دارید، لطفاً آن را به اشتراک بگذارید. ممنون که خواندید!