TG Telegram Group & Channel
آموزش برنامه نویسی جاوا | Java | United States America (US)
Create: Update:

🧵 آشنایی با PriorityQueue در Java

در زبان برنامه‌نویسی جاوا، کلاس PriorityQueue یکی از پیاده‌سازی‌های رابط Queue در چارچوب مجموعه‌ها (`Collections`) است. این ساختار داده، همان‌طور که از نامش پیداست، بر اساس "اولویت" عناصر عمل می‌کند، نه بر اساس ترتیب درج.

ویژگی‌های اصلی PriorityQueue:

* این کلاس عناصر را به‌صورت پیش‌فرض بر اساس ترتیب طبیعی (`natural ordering`) مرتب می‌کند.
* در صورت نیاز می‌توان ترتیب دلخواه را با استفاده از کلاس Comparator تعریف کرد.
* هنگام بازیابی عناصر، کم‌اولویت‌ترین عنصر (کوچک‌ترین بر اساس ترتیب) در اول صف قرار می‌گیرد.
* این کلاس نخ‌امن (Thread-safe) نیست.

🛠️ توابع پرکاربرد در PriorityQueue:


add(E e) // اضافه کردن عنصر به صف
offer(E e) // مانند add، ولی اگر جای خالی نباشد false برمی‌گرداند
peek() // مشاهده عنصر اول بدون حذف آن
poll() // حذف و بازگرداندن عنصر اول
remove(Object o) // حذف عنصر خاص
contains(Object o) // بررسی وجود عنصر خاص در صف
size() // تعداد عناصر موجود در صف
clear() // پاک کردن همه عناصر


🔍 مثال عملی با توضیح:


import java.util.PriorityQueue;

public class Main {
public static void main(String[] args) {
// ساخت یک PriorityQueue از نوع عدد صحیح
PriorityQueue<Integer> queue = new PriorityQueue<>();

// اضافه کردن عناصر
queue.add(30);
queue.add(10);
queue.add(20);

// مشاهده عنصر اول بدون حذف
System.out.println("عنصر اول (peek): " + queue.peek());

// حذف عنصر اول و چاپ آن
System.out.println("حذف شده (poll): " + queue.poll());

// چاپ باقیمانده عناصر
System.out.println("محتوای صف: " + queue);
}
}


📌 توضیح کد:

در این مثال، ابتدا یک PriorityQueue از نوع Integer تعریف شده است. با اضافه کردن اعداد 30، 10 و 20، چون اولویت پیش‌فرض عدد کوچک‌تر است، عدد 10 به عنوان اولین عنصر در صف قرار می‌گیرد.
تابع peek() عدد 10 را بدون حذف نشان می‌دهد، سپس poll() آن را حذف کرده و نمایش می‌دهد. در نهایت صف شامل 20 و 30 می‌شود که به ترتیب از کوچک به بزرگ مرتب هستند.

⚠️ نکته مهم:
اگر می‌خواهید عناصر را بر اساس ترتیبی متفاوت مرتب کنید (مثلاً از بزرگ به کوچک)، می‌توانید از Comparator استفاده کنید:


PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());


🧠 جمع‌بندی:
کلاس PriorityQueue یک ابزار قدرتمند برای مدیریت صف‌های اولویتی در جاوا است که در الگوریتم‌هایی مانند صف‌های پردازش وظایف، زمان‌بندی و ساختارهای جستجو بسیار مفید است.

#کاربرـپیشرفته


🆔 @javapro_ir
🆔 @group_javapro

🧵 آشنایی با PriorityQueue در Java

در زبان برنامه‌نویسی جاوا، کلاس PriorityQueue یکی از پیاده‌سازی‌های رابط Queue در چارچوب مجموعه‌ها (`Collections`) است. این ساختار داده، همان‌طور که از نامش پیداست، بر اساس "اولویت" عناصر عمل می‌کند، نه بر اساس ترتیب درج.

ویژگی‌های اصلی PriorityQueue:

* این کلاس عناصر را به‌صورت پیش‌فرض بر اساس ترتیب طبیعی (`natural ordering`) مرتب می‌کند.
* در صورت نیاز می‌توان ترتیب دلخواه را با استفاده از کلاس Comparator تعریف کرد.
* هنگام بازیابی عناصر، کم‌اولویت‌ترین عنصر (کوچک‌ترین بر اساس ترتیب) در اول صف قرار می‌گیرد.
* این کلاس نخ‌امن (Thread-safe) نیست.

🛠️ توابع پرکاربرد در PriorityQueue:


add(E e) // اضافه کردن عنصر به صف
offer(E e) // مانند add، ولی اگر جای خالی نباشد false برمی‌گرداند
peek() // مشاهده عنصر اول بدون حذف آن
poll() // حذف و بازگرداندن عنصر اول
remove(Object o) // حذف عنصر خاص
contains(Object o) // بررسی وجود عنصر خاص در صف
size() // تعداد عناصر موجود در صف
clear() // پاک کردن همه عناصر


🔍 مثال عملی با توضیح:


import java.util.PriorityQueue;

public class Main {
public static void main(String[] args) {
// ساخت یک PriorityQueue از نوع عدد صحیح
PriorityQueue<Integer> queue = new PriorityQueue<>();

// اضافه کردن عناصر
queue.add(30);
queue.add(10);
queue.add(20);

// مشاهده عنصر اول بدون حذف
System.out.println("عنصر اول (peek): " + queue.peek());

// حذف عنصر اول و چاپ آن
System.out.println("حذف شده (poll): " + queue.poll());

// چاپ باقیمانده عناصر
System.out.println("محتوای صف: " + queue);
}
}


📌 توضیح کد:

در این مثال، ابتدا یک PriorityQueue از نوع Integer تعریف شده است. با اضافه کردن اعداد 30، 10 و 20، چون اولویت پیش‌فرض عدد کوچک‌تر است، عدد 10 به عنوان اولین عنصر در صف قرار می‌گیرد.
تابع peek() عدد 10 را بدون حذف نشان می‌دهد، سپس poll() آن را حذف کرده و نمایش می‌دهد. در نهایت صف شامل 20 و 30 می‌شود که به ترتیب از کوچک به بزرگ مرتب هستند.

⚠️ نکته مهم:
اگر می‌خواهید عناصر را بر اساس ترتیبی متفاوت مرتب کنید (مثلاً از بزرگ به کوچک)، می‌توانید از Comparator استفاده کنید:


PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());


🧠 جمع‌بندی:
کلاس PriorityQueue یک ابزار قدرتمند برای مدیریت صف‌های اولویتی در جاوا است که در الگوریتم‌هایی مانند صف‌های پردازش وظایف، زمان‌بندی و ساختارهای جستجو بسیار مفید است.

#کاربرـپیشرفته


🆔 @javapro_ir
🆔 @group_javapro
👍62😍1


>>Click here to continue<<

آموزش برنامه نویسی جاوا | Java




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)