صفحه 1:
J®@OO® Coleviow Prawework
Get IeterPaces & ۱ جحصلداجج
ساختمان داده ها و الگوریتم ها
صفحه 2:
Onlertion © دسته لیاز لشیاء هب نوع
- (و وکر صرهرررصر6) » روزهاي هفته
٩ عملیات روي مساو
- مرتب سازي
- جستجو
- حذف و اضافه نمودن اعضا
Gioreage/ Retrieve 3b ذخيره و -
صفحه 3:
مزاياي استفاده از اون
© کاهش برنامه نويسي
© افزايش كيفيت و سرعت برنامه ها
© ارتباط آسانتر نرم افزارهاي مختلف
© كاهش زمان يادكيري توابع و متدهاي لازم
© كاهش زمان طراحي توابع و متدهاي جديد
© امكان استفاده مجدد از نرم افزارهاي مبتني بر ج-دةععلام ©
كمومه )0
صفحه 4:
sexe IPOD Colleriives Preaxvework & عد لبزارهاء
قراردادها و چارچوبهاوی کسانب رلیپیاده سازیلنواع مجموعه
هایپویا
Gtack, queue, lst, bask table, wap —
© Coleviows Prexvework
- اه
© Wbsirat Outs Pipe Represeutaiva oP Ovleviocs
~ سوام
© WBOO chase ماع oF the BOT ‘=
— دمحاي
یه مب ری 9
صفحه 5:
© 6 22 اس
* قراردادهايي براي نحوه دسترسي به مجموعه پویا
- نحوه پیاده سازي اين قرار دادها در یی ذکر نمي شود
DOT ste © 9:۳۷) ساختمان داده پشته را تعریف مي کند.
- داده هاي إ.8) : آرايه اي لز اعضا
- عمليات روي !-:3) :حذف و اضافه نمودن اعضاء بررسي ير يا خالي بودن اه
7
& ۲ «سبصمم<) واه 900 چندین مسب | بر يپ شتيباني
ساختماندادم هایمعروف تعريفميک ند
صفحه 6:
© «ومادوات() : مجموعه از لشیا هب نوع
- تمام عملياتي که روي دسته اي از اشیا به صورت عام قابل انجام است؛ در راون
تعریف مي شود
- انواع خاص تر مجموعه هاي پویا؛ از مان ارث مي برند
۴ () : تابع. ( به مفهوم ریاضی)را تعريفميک ند
- هر عضو دامنه به یک و فقط یک عضو برد اختصاص مي یابد.
صفحه 7:
© یکمجموعه بسه مفهوم ریاضيرا تعريفميک ند
- عضو تكراري در اين ماه وجود ندارد
© بج )و3 ): نوع خاصواز 92) لستکه اعضايیه صورت
مرتبقرار گرفته لند.
- الگوریتم هاي جستجو روي اين مجموعه هاء بسیار سریعتر از مجموعه
هاي نا مرتب کار مي کنند.
٩ بورا : دسته لياز لشیاء به صورتمرتبلست بر خاهبی) در بط
مي وان عضو ویتکا ریداشت
صفحه 8:
queue © (صف/ساختار دادم ليلستکه در آنتریبدسترسيیه
لعضاء با ترتیبورود لعضا به یی معينميشود
- هر عضوي که زودتر وارد سحمي زودتر در دسترس قرار مي گیرد
- این ساختار ) ۳2) « بسو۳) است
صفحه 9:
) <0>ترا سا طلجت <کساون وله تلم
Ocwte operate 1
زاس ‘et
:( )نوري ات ساسا
اه اسویان)) سوت ماما
1
books rewoe( Objet eens); Hopaoned
Nerctor<D> terctor();
سس 0 |
:لك <0)> سهدت )سيت booker
booker ox IDK Ovkevar<@> 0); Hop
booker بك <ق>مسسامت)ا دسم opm
تفا :(ت <8)>موسادت) اليس ساسا
زان اج Morera
مه و ||
:)مان لاسرا
;)9 )وی 0 <P>
صفحه 10:
{ 0 کار لسوت <0>0) وله تالم
Ocwte operate 1
زاس ‘et
:( )نوري ات ساسا
اه اسویان)) سوت ماما
1
books rewoe( Objet eens); Hopaoned
Nerctor<D> terctor();
سس 0 |
booker کهساه )میت 9 < v);
extecnby (D> 2); Mopar 7 کهاه )لاله منیا
1
لوا :زم books retackDM(Ovkevioas?>
لوا زان اج
سجن روت |
:)مات لاسرا
;)9 )وی 0 <P>
صفحه 11:
© جر1 : اعضاييكمجموعه را در WaskPable نگهداري
و مديريتميکند.
- ازنظر کارايي: ,را" بهترین پیاده سازي است .
- اين روش ترتيب خاصي روي اعضا اعمال نمي كند
8 ۷ : اعضايمجموعه را به صورتمرتبدر يك ٩4
۳ 9) نگهداريميکند
- کندتر از بع9ویر// عمل مي کند اما ترتیب اعضا را حفظ مي کند
Wash Pabledly 52 | )مرا را اعضایمجموعه ٩
نگهدارييکند. Licked List 44 Sens
- تريب اعضاء بر اساس ترتیب اضافه شدن به مجموعه تعیین مي شود
صفحه 12:
مثال 0: مجموعه اي از رشته ها
Ge<Gtring> = = cew WakSet<Grric>();
Por (Gtricey A up)
P (levadd(a)) Gpetew.out.prictha(a);
Gpetew.0ul.pricta(s.size() +" distiact words: "+ 2);
صفحه 13:
© Get <Gricng> A= caw WurhGet<Girice>() 5
© Get <Gring> sO = cew WushGet<Gwrice>() ;
» Get > موی ربجنر = cew WohGet<Gtriag> (ol);
©» 01)22لله. مد ( :
Get <Gticg> iter = caw WorhOet<Grric>(s(); و
ater etain(PH(s© ) ; و
Get <GtiagedPP = cew WorhGet<Giriag> (cia); و
:)مسر( و
صفحه 14:
٩ با استفاده از 94) و يكي از پیاده سازي هاي آن » برنامه اي
بنویسید که آرایه اي از رشته ها را دریافت کرده و عناصر Dat
تكراري آن را چاپ کند
٩ مهلت ارسال : تا پایان خرداد
JAVA Collections Framework
Set Interfaces & Implementations
ساختمان داده ها و الگوريتم ها
Collection
: Collection دسته اي از اشياء هم نوع
–
{ 1و و2و 2و3و4و4و5و ، }5روزهاي هفته
عمليات روي Collection
–
–
–
–
مرتب سازي
جستجو
حذف و اضافه نمودن اعضا
ذخيره و بازيابي Storage/Retrieve
مزاياي استفاده از Collections
کاهش برنامه نويسي
افزايش کيفيت و سرعت برنامه ها
ارتباط آسانتر نرم افزارهاي مختلف
کاهش زمان يادگيري توابع و متدهاي الزم
کاهش زمان طراحي توابع و متدهاي جديد
امکان استفاده مجدد از نرم افزارهاي مبتني بر Collections
Framework
JAVA Collections Framework
، مجموعه ابزارها:JAVA Collections Framework
قراردادها و چارچوبهاي يکسان براي پياده سازي انواع مجموعه
هاي پويا
Stack, queue, list, hash table, map
Collections
–
Framework
Interfaces
Abstract
–
Implementation
JAVA
–
Data Type Representation of Collections
class definition of the ADT ‘s
Algorithms
How
to sort, search ..?
–
Interface
Interface == ADT
قراردادهايي براي نحوه دسترسي به مجموعه پويا
–
مثال Stack ADT :ساختمان داده پشته را تعريف مي کند.
–
–
نحوه پياده سازي اين قرار دادها در Interfaceذکر نمي شود
داده هاي : Stackآرايه اي از اعضا
عمليات روي : Stackحذف و اضافه نمودن اعضا ،بررسي پر يا خالي بودن Stack
و...
JAVA Collections Frameworkچندين Interfaceبراي پشتيباني
ساختمان داده هاي معروف تعريف مي کند
Core Collection Interfaces
: Collectionمجموعه از اشيا هم نوع
–
–
تمام عملياتي که روي دسته اي از اشيا به صورت عام قابل انجام است ،در Collection
تعريف مي شود
انواع خاص تر مجموعه هاي پويا ،از Collectionارث مي برند
: Mapتابع ( به مفهوم رياضي)را تعريف مي کند
–
هر عضو دامنه به يک و فقط يک عضو برد اختصاص مي يابد.
Collectionهاي خاص
:Set يک مجموعه به مفهوم رياضي را تعريف مي کند
–
عضو تکراري در اين Collectionوجود ندارد
:SortedSet نوع خاصي از Setاست که اعضاي به صورت
مرتب قرار گرفته اند.
–
الگوريتم هاي جستجو روي اين مجموعه ها ،بسيار سريعتر از مجموعه
هاي نا مرتب کار مي کنند.
: List دسته اي از اشياء به صورت مرتب است .برخالف Setدر
listمي توان عضوي تکراري داشت
queue
( queue صف)ساختار داده اي است که در آن تريب دسترسي به
اعضا ،با ترتيب ورود اعضا به queueمعين مي شود
–
–
هر عضوي که زودتر وارد queueزودتر در دسترس قرار مي گيرد
اين ساختار First in First Outاست
Collection Interface
public interface Collection<E> extends Iterable<E> {
// Basic operations
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element);
//optional
boolean remove(Object element); //optional
Iterator<E> iterator();
// Bulk operations
boolean containsAll(Collection<E> c);
boolean addAll(Collection<E> c); //optional
boolean removeAll(Collection<E> c);
//optional
boolean retainAll(Collection<E> c);
//optional
void clear();
//optional
}
// Array operations
Object[] toArray();
<T> T[] toArray(T[] a);
Set Interface
public interface Set<E> extends Collection<E> {
// Basic operations
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element);
//optional
boolean remove(Object element); //optional
Iterator<E> iterator();
// Bulk operations
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c); //optional
boolean removeAll(Collection<?> c);
//optional
boolean retainAll(Collection<?> c);
//optional
void clear();
//optional
}
// Array Operations
Object[] toArray();
<T> T[] toArray(T[] a);
Set Implementation
: HashSet اعضاي يك مجموعه را در HashTable
نگهداري و مديريت مي كند.
–
–
ازنظر كارايي HashSet ،بهترين پياده سازي است .
اين روش ترتيب خاصي روي اعضا اعمال نمي كند
: TreeSet اعضاي مجموعه را به صورت مرتب در يك Red-
Black Treeنگهداري مي كند
–
كندتر از HashSetعمل مي كند اما ترتيب اعضا را حفظ مي كند
LinkedHashSet اعضاي مجموعه را در يك HashTable
مجهز به Linked Listنگهداري مي كند.
–
تريب اعضا ،بر اساس ترتيب اضافه شدن به مجموعه تعيين مي شود
مجموعه اي از رشته ها:1 مثال
Set<String> s = new HashSet<String>();
for (String a : args)
if (!s.add(a)) System.out.println(a);
System.out.println(s.size() + " distinct words: " + s);
تفاضل متقارن: 2 مثال
Set
<String> s1= new HashSet<String>() ;
Set <String> s2 = new HashSet<String>() ;
Set <String> union = new HashSet<String>(s1);
union.addAll(s2) ;
Set <String> inter = new HashSet<String>(s1);
Inter.retainAll(s2) ;
Set <String>diff = new HashSet<String>(union);
Diff.removeAll(inter);
تمرين
با استفاده از Setو يكي از پياده سازي هاي آن ،برنامه اي
بنويسيد كه آرايه اي از رشته ها را دريافت كرده و عناصر غير
تكراري آن را چاپ كند
مهلت ارسال :تا پايان خرداد