آموزش Queue و Set در جاوا، جامع و کاربردی


آموزش Queue و Set در جاوا، جامع و کاربردی
براي خريد اين درس نياز است وارد سايت شويد. در صورت نداشتن حساب کاربري عضو شويد.

آموزش Queue و Set در جاوا، جامع و کاربردی

در این جلسه می‌خواهیم سختار Queue و Set ها را بررسی کنیم و همچنین متدهای کاربردی هر یک را توضیح دهیم.

Queue(صف) ساختار FIFO دارند یعنی عناصر به انتهای لیست اضافه می‌شوند و از ابتدای لیست خارج می‌شوند.

Queue دو شکل پیاده سازی دارند: Queue(صف معمولی) – Deque(صف حلقه ای).

Queue<String> queue1=new LinkedList<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));

Queue<String> queue2=new PriorityQueue<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));

Queue<String> queue3=new ArrayDeque<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));


System.out.println(queue1);

System.out.println(queue2);

System.out.println(queue3);

خروجی                                              

[mehdi, ahmad, mohammad, reza, ali]

[ahmad, ali, mohammad, reza, mehdi]

[mehdi, ahmad, mohammad, reza, ali]

همانطور که در بالا مشاهده می‌کنید ترتیب عناصر در صف LinkedList و ArrayDeque بر اساس ترتیب ورود عناصر قرار گرفته اما در صف PriorityQueue ترتیب بهم ریخته است.

متدهای پرکاربرد Queue

متد peek

این متد اولین عنصر در صف را برمی‌گرداند.

Queue<String> queue1=new LinkedList<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));

Queue<String> queue2=new PriorityQueue<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));

System.out.println(queue1.peek());

System.out.println(queue2.peek());

خروجی

mehdi

ahmad

متد poll

این متد اولین عنصر در صف را برمی‌گرداند و آن را از دورن صف پاک می‌کند.

Queue<String> queue1=new LinkedList<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));

Queue<String> queue2=new PriorityQueue<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));

System.out.println(queue1.poll());

System.out.println(queue2.poll());

System.out.println(queue1);

System.out.println(queue2);

خروجی

mehdi

ahmad

[ahmad, mohammad, reza, ali]

[ali, mehdi, mohammad, reza]

نکته: در PriorityQueue هنگام درج یا حذف عناصر احتمال جابجایی عناصر وجود دارد.

متد remove

این متد نیز مشابه متد poll اولین عنصر صف را برمی‌گرداند و آن را از درون صف پاک می‌کند.

Queue<String> queue1=new LinkedList<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));

Queue<String> queue2=new PriorityQueue<>(Arrays.asList("mehdi","ahmad","mohammad","reza","ali"));

System.out.println(queue1.remove());

System.out.println(queue2.remove());

خروجی

mehdi

ahmad

Set یا مجموعه

زمانی که می‌خواهیم مجموعه ای از داده ها داشته باشیم که عنصر تکراری درون آن وجود نداشته باشد از Set ها استفاده می‌کنیم. Set ها مانند مجموعه ها درون ریاضی هستند و عنصر تکراری درون آنها وجود ندارد. Set ها دو نوع دارند: Set(مجموعه غیر مرتب) – SortedSet(مجموعه مرتب شده). درون تمامی ساختار های Set داده تکراری وجود ندارد و ترتیب عناصر مهم نیست.

HashSet<Integer> set1=new HashSet(Arrays.asList(12,45,32,87,23,45,67,12,66,87));

LinkedHashSet<Integer> set2=new LinkedHashSet(Arrays.asList(12,45,32,87,23,45,67,12,66,87));

TreeSet<Integer> set3=new TreeSet(Arrays.asList(12,45,32,87,23,45,67,12,3,66,87));

خروجی

[32, 66, 67, 87, 23, 12, 45]

[12, 45, 32, 87, 23, 67, 66]

[12, 23, 32, 45, 66, 67, 87]

HashSet: عناصر را اضافه می‌کند و در صورت تکراری بودن عنصر، عنصر جدید را اضافه می‌کند و قبلی را پاک می‌کند.

LinkedHashSet: عناصر را اضافه می‌کند و در صورت تکراری بودن عنصر آن را اضافه نمی‌کند.

TreeSet: علاوه بر حذف عناصر تکراری، ترتیب عناصر را حفظ می‌کند.

ساختار HashSet و TreeSet مانند آرایه است اما ساختار LinkedSet مانند لیست پیوندی است.

نکته: سرعت TreeSet به دلیل مرتب سازی عناصر پایین از HashSet و LinkeedSet است.

متدهای کاربردی TreeSet

همانطور که گفتیم ترتیب عناصر در Set ها اهمیت ندارد و نمی‌توانیم مانند لیست‌ها با شماره خانه به مقدار آن‌ها دسترسی داشته باشیم. اما درون TreeSet به دلیل مرتب سازی عناصر می توانیم به مقدار قبل و بعد عناصر دسترسی داشته باشیم.

متد lower

این متد یک مقدار دریافت می‌کند و عنصر قبلی آن را در مجموعه برمی‌گرداند.

HashSet<Integer> set1=new HashSet(Arrays.asList(12,45,32,87,23,45,67,12,66,87));

LinkedHashSet<Integer> set2=new LinkedHashSet(Arrays.asList(12,45,32,87,23,45,67,12,66,87));

TreeSet<Integer> set3=new TreeSet(Arrays.asList(12,45,32,87,23,45,67,12,3,66,87));

خروجی

45

متد higher

این متد یک مقدار دریافت می‌کند و عنصر بعدی آن را در مجموعه برمی‌گرداند.

TreeSet<Integer> set3=new TreeSet(Arrays.asList(12,45,32,87,23,45,67,12,3,66,87));

System.out.println(set3.higher(66));

خروجی

67

متد firstاین متد اولین عنصر را برمی‌گرداند.


TreeSet<Integer> set3=new TreeSet(Arrays.asList(12,45,32,87,23,45,67,12,3,66,87));

System.out.println(set3.first());

خروجی

3

 

توضیحات ذکر شده چکیده ای می‌باشد از آنچه که می‌خواهید بیاموزید، برای فهم بهتر مطالب این جلسه، می‌توانید این درس را خریداری کنید و از نکات ارزشمند آن بهره مند شوید.

 

سپاسگزاریم که همراه ما هستید

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

 


نظر بدهید نظر شما در تصمیم دیگران اثرگذار است. لطفا برای ما و همراهان درسمن نظر خود را بنویسید.
برای ارسال نظر نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.


مشخصات دوره


مدرس دوره : مهدی عباسی
تعداد جلسات : جلسه
مدت زمان : 1709 دقیقه
حجم دوره : 5/26 گیگابایت
سطح مهارت : پیشرفته
وضعیت دوره : درحال برگزاری
تعداد دانشجویان : 843
: میانگین امتیاز
برای دسترسی به این دوره وارد یا عضو شوید.
مهدی عباسی

مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی آنلاین درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و ....