CodeGym /وبلاگ جاوا /Random-FA /Queue poll() Method در جاوا با مثال
John Squirrels
مرحله
San Francisco

Queue poll() Method در جاوا با مثال

در گروه منتشر شد

صف چیست؟

درست همانطور که از نام آن پیداست، صف یک ساختار داده رایج در جاوا است که از ترتیب درج First In First Out (FIFO) پیروی می کند . شما به راحتی می توانید آن را به عنوان یک صف در یک فروشگاه مواد غذایی تصور کنید. هر چه زودتر وارد شوید زودتر خارج می شوید. این بدان معناست که عنصری که قبلاً به صف اضافه شده است نیز زودتر از آن خارج می شود. اولین عنصر (جلو) صف نیز head نامیده می شود .Queue poll() Method در جاوا با مثال - 2
شکل 1.0: یک صف ساده در جاوا

متد poll() Queue چیست؟

متد poll() به شما امکان می دهد تا بالاترین عنصر (هد) یک صف را بازیابی و حذف کنید. در مثال ما، وقتی poll() را در صف بالا فراخوانی می‌کنید، در نتیجه "1" را دریافت خواهید کرد. و تنها 4 عنصر در صف باقی خواهد ماند.متد صف نظرسنجی () در جاوا با مثال - 3
شکل 1.1: پس از استفاده از متد poll() در یک صف

متد poll() در جاوا

مثال 1

به یک مثال ساده از فراخوانی تابع poll() در صف نشان داده شده در شکل 1.0 نگاه کنید .
import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {

	  // create a queue of die rolls
        Queue dieRoll   = new LinkedList();

        // Add 6 integers one by one
        dieRoll.add(1);
        dieRoll.add(2);
        dieRoll.add(3);
        dieRoll.add(4);
        dieRoll.add(5);
        dieRoll.add(6);

        // print the original queue
        System.out.println("Queue:\t" + dieRoll + "\n");

        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll());
        System.out.println("Queue Updated!\t" + dieRoll + "\n");

        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll());
        System.out.println("Queue Updated!\t" + dieRoll + "\n");

        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll());
        System.out.println("Queue Updated!\t" + dieRoll + "\n");
	}
}
خروجی
صف: [1، 2، 3، 4، 5، 6] نظرسنجی() بازگشت: 1 صف به روز شد! [2، 3، 4، 5، 6] نظرسنجی () بازگشت: 2 صف به روز شد! [3، 4، 5، 6] نظرسنجی () بازگشت: 3 صف به روز شد! [4، 5، 6]
لطفاً توجه داشته باشید که چگونه پس از هر نظرسنجی () اندازه فراخوانی صف 1 کاهش می یابد و هد برگردانده می شود.

مثال 2

بیایید نمونه دیگری از روزهای یک هفته را بررسی کنیم. ما poll() را یکی یکی در روزهای هفته فراخوانی می کنیم و می بینیم که چگونه به نظر می رسد.
import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {

        Queue days   = new LinkedList();

        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n");

        // after calling poll()
        System.out.println("poll() returned: " + days.poll());
        System.out.println("Days Updated!\t" + days + "\n");

        // after calling poll()
        System.out.println("poll() returned: " + days.poll());
        System.out.println("Days Updated!\t" + days + "\n");

        // after calling poll()
        System.out.println("poll() returned: " + days.poll());
        System.out.println("Days Updated!\t" + days + "\n");
	}
}
خروجی
روزهای هفته: [یکشنبه، دوشنبه، سه‌شنبه، چهارشنبه، پنج‌شنبه، جمعه، شنبه] نظرسنجی () بازگشت: یکشنبه‌ها به‌روزرسانی شد! [دوشنبه، سه‌شنبه، چهارشنبه، پنج‌شنبه، جمعه، شنبه] نظرسنجی () بازگشت: دوشنبه‌ها به‌روزرسانی شد! [سه‌شنبه، چهارشنبه، پنج‌شنبه، جمعه، شنبه] نظرسنجی () بازگشت: روز سه‌شنبه به‌روزرسانی شد! [چهارشنبه، پنجشنبه، جمعه، شنبه]

نظرسنجی() چه تفاوتی با peek() و remove() دارد؟

برای مبتدیان بسیار آسان است که سه مفهوم مختلف را با هم ترکیب کنند زیرا کاملاً شبیه به هم هستند. بیایید "q" یک صف باشد، سپس تفاوت آنها به این صورت است:
  • q.poll() : سر ​​صف را حذف و بازیابی می کند
  • q.peek() : حذف نمی کند بلکه فقط سر صف را بازیابی/برمی گرداند.
  • q.remove() : سر صف را حذف و بازیابی می کند
بنابراین به نظر می رسد که remove() و poll() دقیقا یکسان هستند. آنها در شرایط عادی یکسان کار می کنند. اما وقتی صف خالی است، remove() NoSuchElementException را پرتاب می کند ، در حالی که نظرسنجی null را برمی گرداند .

مثال 3

حال بیایید نگاهی گذرا به چند نمونه از سه تابع فوق داشته باشیم.
import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {

        Queue days   = new LinkedList();

        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n");

        // after calling peek()
        System.out.println("peek() returned: " + days.peek());
        System.out.println("Week Days: \t" + days + "\n");

        System.out.println("peek() returned: " + days.peek());
        System.out.println("Week Days: \t" + days + "\n");

        // after calling remove()
        System.out.println("remove() returned: " + days.remove());
        System.out.println("Days Updated!\t" + days + "\n");

        System.out.println("remove() returned: " + days.remove());
        System.out.println("Days Updated!\t" + days + "\n");

        System.out.println("remove() returned: " + days.remove());
        System.out.println("remove() returned: " + days.remove());
        System.out.println("remove() returned: " + days.remove());
        System.out.println("remove() returned: " + days.remove());

        System.out.println("Days Updated!\t" + days + "\n");

        // after calling poll()
        System.out.println("poll() returned: " + days.poll());
        System.out.println("Days Updated!\t" + days + "\n");

        System.out.println("poll() returned: " + days.poll());
        System.out.println("remove() returned: " + days.remove());

	}
}
خروجی
روزهای هفته: [یکشنبه، دوشنبه، سه شنبه، چهارشنبه، پنجشنبه، جمعه، شنبه] peek() بازگشت: یکشنبه روزهای هفته: [یکشنبه، دوشنبه، سه شنبه، چهارشنبه، پنجشنبه، جمعه، شنبه] peek() بازگشت: یکشنبه روزهای هفته : [یکشنبه، دوشنبه، سه شنبه، چهارشنبه، پنجشنبه، جمعه، شنبه] remove() بازگشت: یکشنبه روز به روز شد! [دوشنبه، سه شنبه، چهارشنبه، پنجشنبه، جمعه، شنبه] remove() بازگشت: دوشنبه روز به روز شد! [سه شنبه، چهارشنبه، پنجشنبه، جمعه، شنبه] remove() بازگشت: سه شنبه remove() بازگشت: چهارشنبه remove() بازگشت: پنجشنبه remove() بازگشت: جمعه روزهای به روز شد! [شنبه] نظرسنجی() برگشت: روزهای شنبه به روز شد! [] poll() برگرداند: null Exception در رشته "main" java.util.NoSuchElementException در java.util.LinkedList.removeFirst(LinkedList.java:270) در java.util.LinkedList.remove(LinkedList.java:685.java) QueuePollMethod.main(QueuePollMethod.java:48)
همانطور که می بینید پس از فراخوانی peek() روزهای هفته ثابت می مانند. و همانطور که از remove() یا poll() استفاده می کنیم ، اندازه صف همراه با بازگشت سر به 1 کاهش می یابد. علاوه بر این، java.util.NoSuchElementException زمانی که ما remove() را در یک صف خالی فراخوانی می کنیم، پرتاب می شود، در حالی که چنین استثنایی برای استفاده از poll() پرتاب نمی شود .

نتیجه

در پایان امیدواریم با استفاده و کارکرد متد poll() Queues آشنا شده باشید. با این حال، در صورت هر گونه سردرگمی، همیشه می توانید برای مشاوره به اینجا مراجعه کنید. کد نویسی مبارک!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION