logo

Інтерфейс черги Java

Інтерфейс Queue доступний у пакеті java.util і розширює інтерфейс Collection. Він використовується для збереження елементів, які обробляються за принципом FIFO (First In First Out). Це впорядкований список об’єктів, де вставка елементів відбувається в кінці списку, а видалення елементів — на початку списку.

Будучи інтерфейсом, черга вимагає для оголошення конкретного класу, а найпоширенішими класами є LinkedList і PriorityQueue в Java. Реалізації, виконані цими класами, не є потокобезпечними. Якщо потрібно мати потокобезпечну реалізацію, доступною опцією є PriorityBlockingQueue.

Декларація інтерфейсу черги

 public interface Queue extends Collection 

Методи інтерфейсу черги Java

метод опис
логічне додавання (об'єкт) Він використовується, щоб вставити вказаний елемент у цю чергу та повернути true у разі успіху.
логічна пропозиція (об'єкт) Він використовується для вставки зазначеного елемента в цю чергу.
Об'єкт видалити() Він використовується для отримання та видалення голови цієї черги.
Опитування об'єктів() Він використовується для отримання та видалення голови цієї черги або повертає значення null, якщо ця черга порожня.
Елемент об'єкта() Він використовується для отримання, але не видалення голови цієї черги.
Об'єкт peek() Він використовується для отримання, але не видалення голови цієї черги, або повертає значення null, якщо ця черга порожня.

Особливості черги

Нижче наведено деякі важливі функції черги.

  • Як обговорювалося раніше, концепція FIFO використовується для вставки та видалення елементів із черги.
  • Черга Java забезпечує підтримку всіх методів інтерфейсу колекції, включаючи видалення, вставлення тощо.
  • 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){>