کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Java-آموزش collection framework در جاوا

قبل از Java 2، جاوا گروه های ad hoc ، از قبیل Dictionary, Vector, Stack و Properties  ارائه داد تا گروه های آبجکت ها را ترمیم و ذخیره کند. گرچه این گروه ها کاملا مفید بودند، اما فاقد یک مضمون واحد و مرکزی بودند. بنابراین روش استفاده از Vector با روش استفاده از Properties متفاوت می باشد.

چارچوب collections برای برآوردن اهداف بسیاری طراحی شد:

·         چارچوب باید دارای اجرای سطح بالا (high-performance) باشد. اجراهای مجموعه های اصلی (ردیف های پویا، لیست های لینک، درخت ها و جدول های hash) بسیار موثر می باشند.

·         چارچوب باید به انواع مختلف مجموعه ها با درجه ی بالایی از قابلیت همکاری، اجازه ی کار به یک روش مشابه را بدهد.

·         توسعه یا سازگارساختن یک مجموعه باید آسان باشد.

در راستای این هدف کل چارچوب collections حول مجموعه ای استاندارد از اینترفیس ها طراحی می شود. چندین اجرای استاندارد مانند LinkedList, HashSet  و TreeSet  از این اینترفیس ها ارائه می شوند که ممکن است از آنها استفاده کنید، یا ننکن است در صورت انتخاب مجموعه ی خود را اجرا کنید.

یک چارچوب collections یک طراحی واحد برای نمایش و اجرای مجموعه ها می باشد. همه ی چارچوب های collections حاوی موارد زیر می شوند:

·         اینترفیس ها (Interfaces): اینها انواع داده های انتزاعی هستند که نشانگر کجکوعه ها می باشند. اینترفیس ها به مجموعه ها اجازه می دهند تا مستقل از جزئیات ارائه ی خود اجرا شوند. در زبان های آبجکت محور، به طور کل اینترفیس هایک سلسله مراتب را تشکیل می دهند.

·         اجراها به عنوان مثال کلاس ها (Implementations, i.e., Classes): اینها اجراهای ملموس از اینترفیس های مجموعه می باشند. در واقع آنها ساختارهای قابل استفاده ی داده می باشند.

·         Algorithms: اینها متودهایی هستند که محاسبات موثری مانند جستجو و مرتب سازی را روی آبجکت هایی که اینترفیس های مجموعه را اجرا می کنند، انجام می دهند. گفته می شود که الگوریتم ها دارای چند فرم هستند: یعنی اینکه یک متود می تواند در اجراهای مختلف از یک مجموعه ی اینترفیس مناسب استفاده شود.

علاوه برم جموعه ها، چارچوب چندین گروه و اینترفیس طزاحی را معرفی می کند. طرح ها (maps) جفت های کلید/ مقدار را ذخیره می کنند. گرچه طرح ها مجموعه هایی برای استفاده ی مناسب در عبارت نیستند، اما به طور کامل با مجموعه ها ادغام شده اند.

اینترفیس های مجموعه (Collection Interfaces):

چارچوب collection چندین اینترفیس را تعریف می کند. این بخش یک نگاه اجمالی به هر اینترفیس دارد:

SN

Interfaces with Description

1

The Collection Interface

شما را قادر می سازد تا با گروه هایی از آبجکت ها کار کنید و در واقع در بالای ترتیب مجموعه ها واقع شده است.

2

The List Interface

 Collection  را گسترش می دهد و نمونه ای از List یک مجموعه ی مرتب شده از عناصر را ذخیره می کند.

3

The Set

Collection را برای کنترل مجموعه ها گسترش می دهد که باید دارای عناصر منحصر به فرد باشد.

4

The SortedSet

 را گسترش می دهد تا مجموعه های مرتب شده را کنترل کند.

5

The Map

کلیدهای منحصر به فردی را برای مقادیر طراحی می کند.

6

The Map.Entry

یک عنصر (جفت کلید/مقدار) را در یک طرح توصیف می کند. یک گروه داخلی از Map می باشد.

7

The SortedMap

این اینترفیس Map  را گسترش می دهد، طوریکه کلیدها در یک ترتیب صعودی مرتب می شوند.

8

The Enumeration

این یک اینترفیس legacy می باشد و متودهایی را تعریف می کند که به وسیله ی آنها می توانید عناصر را در یک مجموعه از آبجکت ها بشمرید. این اینترفیس به وسیله ی یک تکرار کننده (Iterator) جایگزین شده است.

 

گروه های Collection جاوا:

جاوا مجموعه ای از گروه های استاندارد ارائه می دهد که اینترفیس های Collection را اجرا می کنند. برخی از این گروه ها یک اجرای کامل ارائه می دهند که می توانند به عنوان as-is  استفاده شوند و گروه های دیگر گروه های انتزاعی می باشند که اجراهای اسکلتی (skeletal) ارائه می دهند که برای ایجاد مجموعه های ملموس به عنوان نقاط شروع استفاده می شوند.

گروه های استاندارد collection در جدول زیر خلاصه می شوند:

SN

Classes with Description

1

AbstractCollection

اکثر اینترفیس های Collection را اجرا می کند.

2

AbstractList

AbstractCollection را گسترش داده و بیشترین بخش از اینترفیس List را اجرا می کند.

3

AbstractSequentialList

AbstractList را برای استفاده با یک مجموعه گسترش می دهد که از یک ترتیب دسترسی متوالی به جای تصادفی، برای دسترسی به عناصر استفاده می کند.

4

LinkedList

یک لیست لینک شده را با گسترش AbstractSequentialList اجرا می کند.

5

ArrayList

با گسترش AbstractList یک ردیف پویا را اجرا می کند.

6

AbstractSet

AbstractCollection را گسترش داده و بیشترین بخش اینترفیس Set  را اجرا می کند.

7

HashSet

AbstractSet را برای استفاده با یک جدول hash گسترش می دهد.

8

LinkedHashSet

HashSet را باز می کند تا اجازه ی insertion-order iterations (تکرار درج سفارش) را بدهد.

9

TreeSet

یک مجموعه ی ذخیره شده در یک درخت را اجرا می کند. AbstractSet را گسترش می دهد.

10

AbstractMap

اکثر اینترفیس های Map را اجرا می کند.

11

HashMap

AbstractMap را گسترش می دهد تا از یک جدول hash استفاده کند.

12

TreeMap

AbstractMap را گسترش می دهد تا از یک درخت استفاده کند.

13

WeakHashMap

AbstractMap را باز می کند تا از یک جدول hash با کلیدهای ضعیف استفاده کند.

14

LinkedHashMap

HashMap را باز می کند تا اجازه ی تکرار درج سفارش (insertion-order iterations ) را بدهد.

15

IdentityHashMap

AbstractMap را باز کرده و در هنگام مقایسه داکیومنت ها از مرجع تساوی استفاده می کند.

 

گروه های AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList  و  AbstractMap اجراهای اسکلتی از مجموعه ی مرکزی اینترفیس ها ارائه می دهند تا تلاش لازم برای اجرای آنها را به حداقل برساند.

گروه های زیر که توسط java.util  تعریف شده اند، در بخش قبل مورد بحث قرار گرفتند:

SN

Classes with Description

1

Vector

یک ردیف پویا اجرا می کند، با کمی تفاوت مشابه ArrayList می باشد.

2

Stack

Stack یک زیرمجموعه از Vector می باشد که یک last-in, first-out stack استاندارد اجرا می کند.

3

Dictionary

Dictionary یک گروه انتزاعی است که یک مخزن ذخیره ی key/value ارائه می دهد و بسیار شبیه Map عمل می کند.

4

Hashtable

Hashtable بخشی از java.util اصلی بود و اجرای ملموس ازیک Dictionary میباشد.

5

Properties

Properties زیرمجموعه ای از Hashtable می باشد، که برای ارائه ی لیست هایی از مقادیر استفاده می شود که کلید آن و همچنین مقدار آن یک String میباشد.

6

BitSet

یک گروه BitSet نوع خاصی از ردیف را ایجاد می کند که مقادیر بیت را در خود دارد. این ردیف می تواند در صورت نیاز افزایش اندازه داشته باشد.

 

الگوریتم های Collection:

چارچوب collections چندین الگوریتم را تعریف می کند که می تواند برای مجموعه ها و طرح ها به کار گرفته شود. این الگوریتم ها به عنوان متودهای استاتیک در داخل گروه های Collections تعریف می شوند.

چندین متود می توانند وارد یک ClassCastException  شوند که زمانی اتفاق می افتد که تلاشی برای مقایسه ی انواع غیرسازگار انجام می شود و یا یک UnsupportedOperationException که زمانی اتفاق می افتد که برای اصلاح یک مجموعه ی غیرقابل تغییر انجام می شود.

مجموعه ها سه متغیر استاتیک تعریف می کنند: EMPTY_SET, EMPTY_LIST و EMPTY_MAP. همه تغییر ناپذیر هستند.

SN

Algorithms with Description

1

The Collection Algorithms

در اینجا لیستی از همه ی اجرای الگوریتم مشاهده می کنید.

 

چگونگی استفاده از یک تکرار کننده (Iterator):

اغلب اوقات تمایل دارید از طریق عناصر در یک مجموعه بچرخید. برای مثال ممکن است بخواهید هر عنصر را نمایش دهید.

ساده ترین راه برای انجام این کار استفاده ازیک iterator (تکرار کننده) می باشد که آبجکتی است که یا  Iterator و یا اینترفیس ListIterator را اجرا می کند.

تکرار کننده شما را قادر می سازد تا با چرخش در یک مجموعهعناصر را تنظیم و یا حذف کنید. ListIterator تکرار کننده را گسترش می دهد تا امکان پیمایش دو طرفه در یک لیست و اصلاح عناصر را ایجاد کند.

SN

Iterator Methods with Description

1

Using Java Iterator

در اینجا لیستی از همه ی متودها را می بینید با مثال هایی که به وسیله ی اینترفیس های Iterator  و  ListIterator ارائه شده اند.

 

چگونگی استفاده از یک مقایسه گر (Comparator):

TreeSet  و  TreeMap هر دو عناصر را در sorted order ، ذخیره می کنند. به هرحال این مقایسه گر است که به طور واضح بیان می کند که sorted order یعنی چه.

این اینترفیس به ما اجازه می دهد تا یک مجموعه ی ارائه شده را به روش های مختلف مرتب کنیم. همچنین این اینترفیس می تواند برای مرتب سازی نمونه های مختلف گروه استفاده شود (حتی گروه هایی که نمی توانیم تغییر دهیم.).

SN

Iterator Methods with Description

1

Using Java Comparator

در اینجا لیستی از همه ی متودها همراه با مثال توسط اینترفیس Comparator ارائه شده است.

 

خلاصه:

چارچوب مجموعه های جاوا به برنامه نویس امکان دسترسی به ساختارهای بسته بندی داده و الگوریتم هایی برای اجرای آنها می دهد.

یک مجموعه آبجکتی است که می تواند اینترفیس ها را برای آبجکت های دیگر حفظ کند. مجموعه ی اینترفیس ها عملکردهایی را اعلام می کند که می توانند روی هر نوع مجموعه ای اجرا شوند.

گروه ها و اینترفیس های چارچوب مجموعه ها در پوشه ی java.util می باشند.

 

1394/07/27 7388 0
نظرات شما

نظرات خود را ثبت کنید...