با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن. و کاربرانی که دوره کامل آموزش برنامه نویسی جاوا را دنبال می کنند. تا قبل از نسخه ی جاوا ۲، جاوا کلاس های ad hoc مانند Dictionary, Vector, Stack و Properties را برای ذخیره و دسته بندی گروه هایی از اشیا فراهم می کرد. اگر چه این کلاس ها بسیار مفید بودند، اما آنها فاقد یک موضوع مرکزی و متحد بودند. به این ترتیب، نحوه استفاده از Vector از نحوه ی استفاده از Properties متفاوت بود. اما با ارائه ی فریم ورک collection در جاوا نه تنها مشکل فوق برطرف شد بلکه مزایای دیگری نیز ارائه شد. برای آشنایی با فریم ورک collection در جاوا در ادامه ی مباحث این بخش با ما همراه باشید.
فریم ورک collection برای رسیدن به اهداف مختلف طراحی شده، از جمله می توان به موارد زیر اشاره کرد:
در این راستا، چارچوب entire collections در اطراف مجموعه ای از اینترفیس های استاندارد طراحی شده است.
تعدادی از پیاده سازی های استاندارد مانند LinkedList، HashSet و TreeSet از این رابط ها ارائه شده است.
چارچوب collection یک معماری واحد برای نمایندگی و دستکاری مجموعه است. کلیه مجموعه ها شامل موارد زیر می باشند:
Interfaces : اینها نوع داده انتزاعی هستند که مجموعه ها را نشان می دهند، در زبان شی گرا، اینترفیس ها به طور کلی یک سلسله مراتب را تشکیل می دهند
Implementations, i.e., Classes : در اصل، این ساختار داده های قابل استفاده مجدد است.
Algorithms : این شامل متدهایی است که محاسبات مفیدی از جمله جستجو و مرتب سازی بر روی اشیاء را انجام می دهند.
علاوه بر collections، این چارچوب چندین نقشه و کلاس ها را نیز تعریف می کند.
فریم ورک collection چندین اینترفیس را تعریف می کند. این بخش یک مرور کلی از هر اینترفیس را ارائه می کند.
ردیف | اینترفیس و توضیحات |
---|---|
۱ | The Collection Interfaceاین کار شما را قادر می سازد تا با گروه هایی از اشیا کار کنید. |
۲ | The List Interfaceاین Collection را گسترش می دهد و نمونه ای از فهرست مجموعه ای از عناصر مرتب را ذخیره می کند. |
۳ | The Setاین Collection برای دسته بندی مجموعه ها که شامل عناصر منحصر به فرد است را گسترش می دهد. |
۴ | The SortedSetاین نوع یک مجموعه را برای رسیدگی به مجموعه های دسته بندی شده گسترش می دهد. |
۵ | The Mapاین نوع نقشه کلیدهای منحصر به فرد را ارزش می دهد. |
۶ | The Map.Entryاین نوع نقشه کلیدهای منحصر به فرد را ارزش می دهد. |
۷ | The SortedMapاین نقشه را گسترش می دهد به طوری که کلید ها به ترتیب صعودی نگهداری می شوند. |
۸ | The Enumerationاین نوع شامل متدهایی است که از Enumeration به ارث برده می شود. |
جاوا مجموعه ای از کلاس های جمع آوری استاندارد را فراهم می کند که اینترفیس های collection را اجرا می کنند.
برخی از کلاس ها پیاده سازی های کامل را می توان از آن استفاده کرد و بعضی دیگر کلاس انتزاعی هستند که پیاده سازی اسکلتی دارند.
جدول زیر شامل کلاس های جمع آوری استاندارد می باشد:
ردیف | کلاس و توضیحات |
---|---|
۱ | AbstractCollection بسیاری از رابط مجموعه را اجرا می کند. |
۲ | AbstractList این نوع Extensions AbstractCollection و بسیاری از رابط لیست را پیاده سازی می کند. |
۳ | AbstractSequentialList برای دسترسی به مجموعه ای که عناصر آن دسترسی تصادفی دارند. |
۴ | LinkedListپیاده سازی یک لیست پیوندی توسط گسترش AbstractSequentialList. |
۵ | ArrayListآرایه پویایی را با گسترش AbstractList اجرا می کند. |
۶ | AbstractSet اجرای بسیاری از اینترفیس های مجموعه |
۷ | HashSet برای استفاده با جدول هش ارائه می شود. |
۸ | LinkedHashSetHashSet را گسترش می دهد تا تکرار سفارش های درج را اجازه دهد. |
۹ | TreeSetمجموعه ای از ذخیره شده در یک درخت را اجرا می کند. |
۱۰ | AbstractMap بسیاری از اینترفیس های Map را اجرا می کند. |
۱۱ | HashMapبرای استفاده از یک جدول هش ارائه شده. |
۱۲ | TreeMapبرای استفاده از یک ساختار درختی ارائه شده. |
۱۳ | WeakHashMapبرای استفاده از یک جدول هش با کلید های ضعیف ارائه شده است. |
۱۴ | LinkedHashMapترتیب قرارگیری در هش را ارئه می دهد. |
۱۵ | IdentityHashMapاستفاده از یک مرجع برابر را اجازه می دهد. |
جدول زیر شامل کلاس های وراثتی تعریف شده توسط java.util است که در فصل قبل مورد بحث قرار گرفته است:
ردیف | کلاس و توضیحات مربوطه |
---|---|
۱ | Vectorاین یک آرایه پویا را اجرا می کند که مشابه ArrayList است. |
۲ | StackStack یک کلاس زیر مجموعه ای از Vector است که یک پشته استاندارد را ارائه می دهد. |
۳ | Dictionaryدیکشنری یک کلاس انتزاعی است که مخزن ذخیره سازی کلید / ارزش را نشان می دهد. |
۴ | HashtableHashtable بخشی از java.util اصلی است و اجرای بنیادی یک دیکشنری است. |
۵ | Propertiesخواص یک زیر کلاس از Hashtable است. این نوع برای نگهداری لیست مقادیری است که در آن کلید یک رشته است. |
۶ | BitSetیک نوع خاص از آرایه را ایجاد می کند که ارزش های بیتی داشته و در صورت لزوم گسترش می یابد. |
فریم ورک Collection چندین الگوریتم را تعریف می کند که می تواند به مجموعه ها و نقشه ها اعمال شود.
این الگوریتم ها به عنوان متد های استاتیک در کلاس Collections تعریف می شوند.
تعدادی از متد ها می توانند ClassCastException را اجرا کنند.
فریم ورک Collections سه متغیر استاتیک EMPTY_SET، EMPTY_LIST و EMPTY_MAP را تعریف می کند.
متغیرهای فوق همه غیر قابل تغییر است.
اغلب، شما می خواهید از طریق عناصر در یک مجموعه یک چرخه داشته باشید.
برای مثال، ممکن است بخواهید هر کدام از عناصر را نمایش دهید.
ساده ترین راه این کار این است که یک تکرار را بکار ببرید، که یک شی است که هر دو Iterator یا رابط ListIterator را اجرا می کند.
Iterator شما را قادر می سازد تا از طریق یک مجموعه، برای دست آوردن و یا حذف عناصر چرخه. ListIterator Iterator را گسترش دهید.
این اینترفیس به ما اجازه می دهد که یک مجموعه داده شده را هر کدام از انواع مختلف مرتب کنیم.
همچنین این اینترفیس را می توان برای مرتب کردن هر نمونه از هر کلاس (حتی کلاس هایی که ما نمی توانیم آن را تغییر دهیم)استفاده کرد.
مجموعه ای از شیء است که می تواند اشاره به اشیاء دیگر داشته باشد.
اینترفیس های مجموعه اعلان عملیاتی را می توان بر روی هر نوع مجموعه انجام داد.
کلاس ها و اینترفیس های فریم ورک مجموعه در بسته java.util قرار دارند.
فریم ورک collection در جاوا طرز استفاده از مجموعه ای از کلاس های مرتبط را نظیر کلاس های ساختمان داده ها را بصورت متمرکز در اختیار برنامه نویس قرار می دهد. در بخش بعدی متدهای generic در جاوا را بررسی خواهیم کرد.