logo

Java Queue интерфейс

Интерфейсът Queue е наличен в пакета java.util и разширява интерфейса Collection. Използва се за запазване на елементите, които се обработват по начина Първи влязъл, първи излязъл (FIFO). Това е подреден списък от обекти, където вмъкването на елементи се извършва в края на списъка, а премахването на елементи се извършва в началото на списъка.

Тъй като е интерфейс, опашката изисква за декларацията конкретен клас, а най-често срещаните класове са LinkedList и PriorityQueue в Java. Реализациите, направени от тези класове, не са безопасни за нишки. Ако се изисква да има безопасна реализация на нишката, PriorityBlockingQueue е налична опция.

Декларация на интерфейса на опашка

 public interface Queue extends Collection 

Методи на Java Queue Interface

Метод Описание
булево добавяне (обект) Използва се за вмъкване на посочения елемент в тази опашка и връщане на true при успех.
булева оферта (обект) Използва се за вмъкване на посочения елемент в тази опашка.
Премахване на обект() Използва се за извличане и премахване на главата на тази опашка.
Обектна анкета() Използва се за извличане и премахване на главата на тази опашка или връща нула, ако тази опашка е празна.
Обектен елемент() Използва се за извличане, но не премахване на главата на тази опашка.
Object peek() Използва се за извличане, но не премахване на главата на тази опашка или връща нула, ако тази опашка е празна.

Характеристики на опашка

По-долу са някои важни характеристики на опашка.

  • Както беше обсъдено по-рано, концепцията FIFO се използва за вмъкване и изтриване на елементи от опашка.
  • Java Queue осигурява поддръжка за всички методи на интерфейса за събиране, включително изтриване, вмъкване и т.н.
  • PriorityQueue, ArrayBlockingQueue и LinkedList са реализациите, които се използват най-често.
  • Изключението NullPointerException се повдига, ако се извърши нулева операция върху BlockingQueues.
  • Тези опашки, които присъстват в util са известни като неограничени опашки.
  • Тези опашки, които присъстват в полезен са известни като ограничени опашки.
  • Всички опашки, забраняващи Deques, улеснява премахването и вмъкването в началото и опашката на опашката; съответно. Всъщност deques поддържат вмъкване и премахване на елементи в двата края.

PriorityQueue клас

PriorityQueue също е клас, който е дефиниран в рамката за събиране, която ни дава начин за обработка на обектите на базата на приоритет. Вече е описано, че вмъкването и изтриването на обекти следва FIFO модел в опашката на Java. Въпреки това, понякога е необходимо елементите на опашката да бъдат обработени според приоритета, това е мястото, където PriorityQueue влиза в действие.

Декларация на клас PriorityQueue

Нека да видим декларацията за класа java.util.PriorityQueue.

 public class PriorityQueue extends AbstractQueue implements Serializable 

Пример за Java PriorityQueue

Име на файл: 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()); } } } 
Тествайте сега

Изход:

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

Пример за Java PriorityQueue: Книга

Нека да видим пример за PriorityQueue, където добавяме книги към опашката и отпечатваме всички книги. Елементите в PriorityQueue трябва да са от тип Comparable. Класовете String и Wrapper са Comparable по подразбиране. За да добавите дефинирани от потребителя обекти в PriorityQueue, трябва да внедрите Comparable интерфейс.

Име на файл: 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){>