CodeGym /จาวาบล็อก /สุ่ม /Queue poll() วิธีการใน Java พร้อมตัวอย่าง
John Squirrels
ระดับ
San Francisco

Queue poll() วิธีการใน Java พร้อมตัวอย่าง

เผยแพร่ในกลุ่ม

คิวคืออะไร?

Queue เป็นโครงสร้างข้อมูลทั่วไปใน Java ตามคำสั่ง แทรกFirst In First Out (FIFO)เช่นเดียวกับชื่อ ลองนึกภาพง่ายๆ ว่าเป็นคิวในร้านขายของชำ ยิ่งเข้าเร็ว ยิ่งออกเร็ว หมายความว่าองค์ประกอบที่เพิ่มลงในคิวก่อนหน้านี้จะออกก่อนหน้านี้เช่นกัน องค์ประกอบแรก ( ด้านหน้า) ของคิวเรียกอีกอย่างว่าheadQueue poll() วิธีการใน Java พร้อมตัวอย่าง - 2
รูปที่ 1.0: Queue อย่างง่ายใน Java

วิธีการโพล () ของคิวคืออะไร?

วิธีการสำรวจความคิดเห็น () ช่วยให้คุณสามารถดึงและลบองค์ประกอบบนสุด (ส่วนหัว) ของคิว ในตัวอย่างของเรา เมื่อคุณเรียกใช้ poll() ที่คิวด้านบน คุณจะได้รับ '1' เป็นผลลัพธ์ และจะเหลือเพียง 4 องค์ประกอบในคิวQueue poll() วิธีการใน Java พร้อมตัวอย่าง - 3
รูปที่ 1.1: หลังจากใช้เมธอด 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] การสำรวจ () ส่งคืน: 1 คิวอัปเดตแล้ว! [2, 3, 4, 5, 6] แบบสำรวจความคิดเห็น () ส่งคืน : อัปเดต 2 คิว! [3, 4, 5, 6] โพลล์ () ส่งคืน : 3 คิว อัปเดตแล้ว! [4, 5, 6]
โปรดทราบว่าหลังจากแต่ละโพล ()ขนาดการโทรของคิวจะลดลง 1 และส่วนหัวจะถูกส่งกลับ อย่างไร

ตัวอย่างที่ 2

ลองดูตัวอย่างอื่นของวันในหนึ่งสัปดาห์ เราจะเรียกแบบสำรวจความคิดเห็นทีละรายการในวันธรรมดาและดูว่าเป็นอย่างไร

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() ส่งคืน: วันอาทิตย์ วันในสัปดาห์ : [อาทิตย์, จันทร์, อังคาร, พุธ, พฤหัสบดี, ศุกร์, เสาร์] ลบ () คืน: อัพเดทวันอาทิตย์! [วันจันทร์ วันอังคาร วันพุธ วันพฤหัสบดี วันศุกร์ วันเสาร์] ลบ () กลับ: อัปเดตวันจันทร์! [อังคาร พุธ พฤหัสบดี ศุกร์ เสาร์] ลบ() คืน: อังคาร ลบ() ส่งกลับ: วันพุธ ลบ() ส่งกลับ: พฤหัสบดี ลบ() ส่งกลับ: วันศุกร์ อัปเดตวัน! [วันเสาร์] แบบสำรวจความคิดเห็น () ส่งคืน: อัปเดตวันเสาร์แล้ว! [] โพลล์ () ส่งคืน: null ข้อยกเว้นในเธรด "main" java.util.NoSuchElementException ที่ java.util.LinkedList.removeFirst(LinkedList.java:270) ที่ java.util.LinkedList.remove (LinkedList.java:
อย่างที่คุณเห็นหลังจากโทรpeek()วันธรรมดายังคงเหมือนเดิม และในขณะที่เราใช้การลบ ()หรือการสำรวจความคิดเห็น ()ขนาดของคิวจะลดลง 1 พร้อมกับส่งคืนส่วนหัว ยิ่งไปกว่านั้นjava.util.NoSuchElementExceptionจะถูกส่งออกไปเมื่อเราเรียกremove()ที่คิวว่าง ในขณะที่ไม่มีข้อยกเว้นดังกล่าวเกิดขึ้นจากการใช้poll()

บทสรุป

ในตอนท้าย เราหวังว่าคุณจะคุ้นเคยกับการใช้และการทำงานของเมธอด poll()ของ Queues อย่างไรก็ตามในกรณีที่เกิดความสับสน คุณสามารถกลับมาที่นี่เพื่อปรึกษาได้เสมอ มีความสุขในการเข้ารหัส!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION