Java Queue: ทุกสิ่งที่คุณต้องการรู้เกี่ยวกับคิวใน Java



ในบทความนี้เราจะนำโครงสร้างข้อมูล Java ยอดนิยมที่เรียกว่า Java Queue นอกจากนี้เราจะใช้ตัวอย่างแบบเป็นโปรแกรมที่เหมาะสมเพื่อความเข้าใจที่ดีขึ้น

เป็นภาษาการเขียนโปรแกรมที่มีประสิทธิภาพและรองรับโครงสร้างข้อมูลต่างๆเพื่อให้ชีวิตของโปรแกรมเมอร์ง่ายขึ้น ในบทความนี้เราจะมาดูโครงสร้างข้อมูลดังกล่าวนั่นคือ Java Queue นี่คือคำแนะนำที่บทความนี้มุ่งเน้น

ให้เราเริ่มต้นจากนั้น





คิวใน Java

คิวคือโครงสร้างข้อมูลที่เป็นไปตามหลักการของ FIFO (เข้าก่อน - ออกก่อน) นั่นคือองค์ประกอบจะถูกแทรกที่ส่วนท้ายของรายการและจะถูกลบออกจากจุดเริ่มต้นของรายการ อินเทอร์เฟซนี้มีอยู่ใน java.util.package และขยาย Collection Interface

คิวรองรับหลายวิธีรวมถึงการแทรกและการลบ คิวที่มีอยู่ใน java.util.package เรียกว่า คิวที่ไม่ถูกผูกมัด ในขณะที่คิวที่มีอยู่ในแพ็คเกจ java.util.concurrent เป็นที่รู้จัก คิวที่ถูกผูกไว้



คิวทั้งหมดยกเว้น Deques รองรับการแทรกในตอนท้ายและการลบจากด้านหน้า Deques รองรับการแทรกและการลบองค์ประกอบที่ปลายทั้งสองด้าน

ให้เราไปที่หัวข้อถัดไปของบทความนี้ใน Java Queue

การใช้งาน Java Queue

ในการใช้อินเทอร์เฟซคิวเราจำเป็นต้องสร้างอินสแตนซ์คลาสที่เป็นรูปธรรม ต่อไปนี้เป็นการนำไปใช้งานบางส่วนที่สามารถใช้ได้:



  • util.LinkedList
  • util.PriorityQueue

เนื่องจากการใช้งานเหล่านี้ไม่ปลอดภัยต่อเธรด PriorityBlockingQueue จึงทำหน้าที่เป็นทางเลือกสำหรับการใช้งานเธรดที่ปลอดภัย

ตัวอย่าง:

คิว q1 = LinkedList ใหม่ ()
คิว q2 = PriorityQueue ใหม่ ()

ให้เราลองใช้วิธีการคิว Java ที่สำคัญบางอย่าง

วิธีการในคิว Java

  • เพิ่ม(): วิธีการเพิ่ม () ใช้เพื่อแทรกองค์ประกอบที่ส่วนท้ายหรือที่ส่วนท้ายของคิว วิธีนี้สืบทอดมาจากอินเทอร์เฟซการรวบรวม
  • เสนอ(): วิธีการ offer () เป็นวิธีที่ดีกว่าสำหรับวิธีการ add () เนื่องจากจะแทรกองค์ประกอบที่ระบุลงในคิวโดยไม่ละเมิดข้อ จำกัด ด้านความจุใด ๆ
  • แอบมอง (): peek () ใช้เพื่อดูด้านหน้าของคิวโดยไม่ต้องลบออก ถ้าคิวว่างจะส่งคืนค่าว่าง
  • ธาตุ(): ถ้าคิวว่างเมธอดจะพ่น NoSuchElementException
  • ลบ (): เมธอด remove () จะลบด้านหน้าของคิวและส่งกลับ พ่น NoSuchElementException ถ้าคิวว่าง
  • แบบสำรวจ (): วิธีการแบบสำรวจ () จะลบจุดเริ่มต้นของคิวและส่งกลับ ถ้าคิวว่างจะส่งคืนค่าว่าง

ภาพรวมของวิธีการต่อไปนี้มีดังต่อไปนี้:

การดำเนินการ

โยนข้อยกเว้น

ส่งคืนค่า

แทรก

เพิ่ม (องค์ประกอบ)

ข้อเสนอ (องค์ประกอบ)

ลบ

ลบ ()

แบบสำรวจ ()

ตรวจสอบ

ธาตุ()

แอบมอง ()

ให้เราดูการสาธิตตอนนี้

โปรแกรมเพื่อสาธิตวิธีการจัดคิว

import java.util. * public class Main {public static void main (String [] args) {// เราไม่สามารถสร้างอินสแตนซ์ของ Queue ได้เนื่องจากเป็นอินเทอร์เฟซดังนั้นเราจึง Queue q1 = new LinkedList () // การเพิ่มองค์ประกอบให้ คิว q1.add ('I') q1.add ('Love') q1.add ('Rock') q1.add ('And') q1.add ('Roll') System.out.println ('Elements ในคิว: '+ q1) / * * เราสามารถลบองค์ประกอบออกจากคิวโดยใช้วิธีการลบ (), * สิ่งนี้จะลบองค์ประกอบแรกออกจากคิว * / System.out.println (' ลบองค์ประกอบ: '+ q1.remove ( )) / * * element () วิธีนี้จะคืนค่าส่วนหัวของ * Queue * / System.out.println ('Head:' + q1.element ()) / * * โพลล์ () วิธีการ - สิ่งนี้จะลบและส่งคืน * head ของ Queue ส่งคืนค่า null หาก Queue ว่างเปล่า * / System.out.println ('โพล ():' + q1.poll ()) / * * peek () วิธีการ - ทำงานเหมือนกับวิธี element () แต่ * จะส่งกลับ null ถ้าคิวว่างเปล่า * / System.out.println ('peek ():' + q1.peek ()) // การแสดงองค์ประกอบของ Queue System.out.println ('Elements in Queue:' + q1)} }

เอาท์พุต:

องค์ประกอบในคิว: [I, Love, Rock, And, Roll]

องค์ประกอบที่ถูกลบ: I

หัวหน้า: ความรัก

โพล (): ความรัก

แอบมอง (): ร็อค

องค์ประกอบในคิว: [Rock, And, Roll] ในตัวอย่างข้างต้นมีการใช้ Generic Queue

ในคิวประเภทนี้เราสามารถ จำกัด ประเภทของวัตถุที่แทรกลงในคิวได้ ในตัวอย่างของเราเราสามารถแทรกอินสแตนซ์สตริงลงในคิวได้เท่านั้น

วนซ้ำผ่านคิว Java

องค์ประกอบในคิวจาวาสามารถทำซ้ำได้โดยใช้รหัสต่อไปนี้:

คิว q1 = LinkedList ใหม่ ()

q1.add (“ ร็อค”)

q1.add (“ และ”)

q1.add (“ ม้วน”)

// เข้าถึงผ่าน Iterator

Iterator ตัววนซ้ำ = q1.iterator ()

ในขณะที่ (iterator.hasNext () {

องค์ประกอบสตริง = (สตริง) iterator.next ()

}

ค้นหาจำนวนที่มากที่สุดใน array java

// เข้าถึงผ่าน for-loop ใหม่

สำหรับ (Object object: q1) {

องค์ประกอบสตริง = (สตริง) วัตถุ

}

ลำดับที่องค์ประกอบจะวนซ้ำขึ้นอยู่กับการนำคิวไปใช้

แม้ว่าจะมีหลายวิธีที่ Java Queue สามารถนำไปใช้ได้ แต่วิธีการที่สำคัญที่สุดได้รับการกล่าวถึงที่นี่

ดังนั้นเราจึงมาถึงตอนท้ายของบทความนี้ใน 'Java Queue' หากคุณต้องการเรียนรู้เพิ่มเติมตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ได้รับการออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อกนี้และเราจะติดต่อกลับโดยเร็วที่สุด