CodeGym /בלוג Java /Random-HE /שיטת queue poll() ב-Java עם דוגמאות
John Squirrels
רָמָה
San Francisco

שיטת queue poll() ב-Java עם דוגמאות

פורסם בקבוצה

מה זה תור?

בדיוק כפי שהשם מרמז, Queue הוא מבנה נתונים נפוץ ב-Java בעקבות סדר ההכנסה First In First Out (FIFO) . אתה יכול בקלות לדמיין את זה בתור תור במכולת. ככל שנכנסים מוקדם יותר, כך יוצאים מהר יותר. זה אומר שהרכיב שנוסף לתור מוקדם יותר ייצא גם מוקדם יותר. האלמנט הראשון (הקדמי) של התור נקרא גם head .שיטת queue poll() ב-Java עם דוגמאות - 2
איור 1.0: תור פשוט ב-Java

מהי שיטת poll() של Queue?

שיטת poll() מאפשרת לך לאחזר ולהסיר את האלמנט העליון (ראש) של תור. בדוגמה שלנו, כאשר אתה קורא ל-pol() בתור שלמעלה, תקבל '1' כתוצאה מכך. ויישארו רק 4 אלמנטים בתור.שיטת queue poll() ב-Java עם דוגמאות - 3
איור 1.1: לאחר שימוש בשיטת poll() בתור

שיטת poll() ב-Java

דוגמה 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] poll() החזיר : 1 תור עודכן! [2, 3, 4, 5, 6] poll() החזירו: 2 תור עודכן! [3, 4, 5, 6] poll() החזירו: 3 תור עודכן! [4, 5, 6]
שים לב, כיצד לאחר כל קריאת סקר() גודל התור מצטמצם ב-1 והראש מוחזר.

דוגמה 2

בואו נסתכל על דוגמה נוספת של ימים בשבוע. נתקשר ל- pol() אחד אחד בימי חול ונראה איך זה נראה.
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");
	}
}
תְפוּקָה
ימי שבוע: [ראשון, שני, שלישי, רביעי, חמישי, שישי, שבת] סקר() שהוחזר: ימי ראשון מעודכנים! [שני, שלישי, רביעי, חמישי, שישי, שבת] סקר() החזיר: יום שני ימים עודכן! [שלישי, רביעי, חמישי, שישי, שבת] סקר() החזיר: יום שלישי ימים עודכן! [רביעי, חמישי, שישי, שבת]

במה שונה poll() מ-peek() ו- remove()?

קל מאוד למתחילים לשלב בין שלושת המושגים השונים מכיוון שהם נראים די דומים. בוא "ש" יהיה תור, אז הנה איך הם שונים:
  • q.poll() : מסיר ומחזיר את ראש התור
  • q.peek() : לא מסיר אלא רק מאחזר/מחזיר את ראש התור
  • q.remove() : מסיר ומחזיר את ראש התור
אז נראה ש- remove() ו- pol() זהים לחלוטין. הם עובדים בצורה זהה בנסיבות רגילות. אבל כאשר התור ריק, remove() זורק את NoSuchElementException , בעוד poll מחזירה 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 חריגה בשרשור "ראשי" java.util.NoSuchElementException ב-java.util.LinkedList.removeFirst(LinkedList.java:270) ב-java.util.LinkedList.remove(LinkedList.java:685) ב- QueuePollMethod.main(QueuePollMethod.java:48)
כפי שאתה יכול לראות לאחר התקשרות peek() ימי השבוע נשארים זהים. וכאשר אנו משתמשים ב- remove() או poll() גודל התור מצטמצם ב-1 יחד עם החזרת הראש. יתר על כן, java.util.NoSuchElementException נזרק כאשר אנו קוראים remove() בתור ריק, בעוד שלא נזרק חריג כזה עבור שימוש ב-pol() .

סיכום

עד הסוף, אנו מקווים שאתה מכיר את השימוש והעבודה של שיטת poll() של Queue. עם זאת בכל מקרה של בלבול אתה תמיד יכול לחזור לכאן להתייעץ. קידוד שמח!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION