logo

Java-wachtrijinterface

De interface Queue is beschikbaar in het java.util-pakket en breidt de Collection-interface uit. Het wordt gebruikt om de elementen te bewaren die op de First In First Out (FIFO) manier worden verwerkt. Het is een geordende lijst met objecten, waarbij het invoegen van elementen aan het einde van de lijst plaatsvindt en het verwijderen van elementen aan het begin van de lijst.

Omdat het een interface is, heeft de wachtrij voor de declaratie een concrete klasse nodig, en de meest voorkomende klassen zijn LinkedList en PriorityQueue in Java. Implementaties die door deze klassen worden uitgevoerd, zijn niet thread-safe. Als er een thread-safe implementatie nodig is, is PriorityBlockingQueue een beschikbare optie.

Verklaring van wachtrij-interface

 public interface Queue extends Collection 

Methoden van Java Queue-interface

Methode Beschrijving
Booleaanse toevoeging(object) Het wordt gebruikt om het opgegeven element in deze wachtrij in te voegen en bij succes True terug te geven.
Booleaanse aanbieding(object) Het wordt gebruikt om het opgegeven element in deze wachtrij in te voegen.
Object verwijderen() Het wordt gebruikt om de kop van deze wachtrij op te halen en te verwijderen.
Objectenquête() Het wordt gebruikt om de kop van deze wachtrij op te halen en te verwijderen, of retourneert null als deze wachtrij leeg is.
Objectelement() Het wordt gebruikt om de kop van deze wachtrij op te halen, maar niet te verwijderen.
Object kijkje() Het wordt gebruikt om de kop van deze wachtrij op te halen, maar deze niet te verwijderen, of retourneert nul als deze wachtrij leeg is.

Kenmerken van een wachtrij

Hieronder volgen enkele belangrijke kenmerken van een wachtrij.

  • Zoals eerder besproken wordt het FIFO-concept gebruikt voor het invoegen en verwijderen van elementen uit een wachtrij.
  • De Java Queue biedt ondersteuning voor alle methoden van de Collection-interface, inclusief verwijderen, invoegen, enz.
  • PriorityQueue, ArrayBlockingQueue en LinkedList zijn de implementaties die het meest worden gebruikt.
  • De NullPointerException wordt gegenereerd als er een null-bewerking wordt uitgevoerd op de BlockingQueues.
  • De wachtrijen die aanwezig zijn in de gebruik pakket staan ​​bekend als onbegrensde wachtrijen.
  • De wachtrijen die aanwezig zijn in de bruikbaar pakket staan ​​bekend als begrensde wachtrijen.
  • Alle wachtrijen behalve de Deques vergemakkelijken het verwijderen en inbrengen aan het begin en einde van de wachtrij; respectievelijk. In feite ondersteunen deques het inbrengen en verwijderen van elementen aan beide uiteinden.

PriorityQueue-klasse

PriorityQueue is ook een klasse die is gedefinieerd in het verzamelingsframework en die ons een manier biedt om de objecten op basis van prioriteit te verwerken. Er is al beschreven dat het invoegen en verwijderen van objecten het FIFO-patroon in de Java-wachtrij volgt. Soms moeten de elementen van de wachtrij echter worden verwerkt volgens de prioriteit, en dat is waar een PriorityQueue in actie komt.

PriorityQueue-klassedeclaratie

Laten we de declaratie voor de klasse java.util.PriorityQueue bekijken.

 public class PriorityQueue extends AbstractQueue implements Serializable 

Java PriorityQueue-voorbeeld

Bestandsnaam: TestCollection12.java

 import java.util.*; class TestCollection12{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit'); queue.add('Vijay'); queue.add('Karan'); queue.add('Jai'); queue.add('Rahul'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } } 
Test het nu

Uitgang:

head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay 

Java PriorityQueue Voorbeeld: Boek

Laten we een PriorityQueue-voorbeeld bekijken waarin we boeken aan de wachtrij toevoegen en alle boeken afdrukken. De elementen in PriorityQueue moeten van het type Vergelijkbaar zijn. String- en Wrapper-klassen zijn standaard vergelijkbaar. Als u door de gebruiker gedefinieerde objecten aan PriorityQueue wilt toevoegen, moet u een vergelijkbare interface implementeren.

Bestandsnaam: LinkedListExample.java

 import java.util.*; class Book implements Comparable{ int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } public int compareTo(Book b) { if(id&gt;b.id){ return 1; }else if(id <b.id){ return -1; }else{ 0; } public class linkedlistexample { static void main(string[] args) queue priorityqueue(); creating books book b1="new" book(121,'let us c','yashwant kanetkar','bpb',8); b2="new" book(233,'operating system','galvin','wiley',6); b3="new" book(101,'data communications & networking','forouzan','mc graw hill',4); adding to the queue.add(b1); queue.add(b2); queue.add(b3); system.out.println('traversing elements:'); traversing elements for(book b:queue){ system.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); queue.remove(); system.out.println('after removing one record:'); < pre> <p> <strong>Output:</strong> </p> <pre>Traversing the queue elements: 101 Data Communications &amp; Networking Forouzan Mc Graw Hill 4 233 Operating System Galvin Wiley 6 121 Let us C Yashwant Kanetkar BPB 8 After removing one book record: 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 </pre> <hr></b.id){>