Interfejs Queue jest dostępny w pakiecie java.util i stanowi rozszerzenie interfejsu Collection. Służy do przechowywania elementów przetwarzanych według zasady FIFO (First In First Out). Jest to uporządkowana lista obiektów, gdzie wstawianie elementów następuje na końcu listy, a usuwanie elementów na początku listy.
Będąc interfejsem, kolejka wymaga do deklaracji konkretnej klasy, a najpopularniejszymi klasami są LinkedList i PriorityQueue w Javie. Implementacje wykonane przez te klasy nie są bezpieczne dla wątków. Jeśli wymagana jest implementacja bezpieczna dla wątków, dostępna jest opcja PriorityBlockingQueue.
Deklaracja interfejsu kolejki
public interface Queue extends Collection
Metody interfejsu kolejki Java
metoda | Opis |
---|---|
wartość logiczna dodaj (obiekt) | Służy do wstawienia określonego elementu do tej kolejki i zwrócenia wartości true w przypadku powodzenia. |
oferta logiczna (obiekt) | Służy do wstawienia określonego elementu do tej kolejki. |
Usuń obiekt() | Służy do pobierania i usuwania nagłówka tej kolejki. |
Sonda obiektu() | Służy do pobierania i usuwania nagłówka tej kolejki lub zwraca wartość null, jeśli kolejka jest pusta. |
Element obiektu() | Służy do pobierania, ale nie usuwania, początku tej kolejki. |
Podgląd obiektu() | Służy do pobierania, ale nie usuwania, nagłówka tej kolejki lub zwraca wartość null, jeśli ta kolejka jest pusta. |
Cechy kolejki
Poniżej przedstawiono kilka ważnych cech kolejki.
łączność z Javą
- Jak wspomniano wcześniej, koncepcja FIFO służy do wstawiania i usuwania elementów z kolejki.
- Kolejka Java zapewnia obsługę wszystkich metod interfejsu Collection, w tym usuwania, wstawiania itp.
- Najczęściej używane implementacje to PriorityQueue, ArrayBlockingQueue i LinkedList.
- Wyjątek NullPointerException jest zgłaszany, jeśli na kolejkach BlockingQueues zostanie wykonana jakakolwiek operacja null.
- Te kolejki, które są obecne w użytkowy pakiety są nazywane kolejkami nieograniczonymi.
- Te kolejki, które są obecne w użyteczne pakiety są nazywane kolejkami ograniczonymi.
- Wszystkie kolejki z wyjątkiem Deques ułatwiają wyjmowanie i wkładanie na początku i na końcu kolejki; odpowiednio. W rzeczywistości ułatwia to wkładanie i wyjmowanie elementu nośnego na obu końcach.
Klasa PriorityQueue
PriorityQueue to także klasa zdefiniowana w frameworku kolekcji, która umożliwia nam przetwarzanie obiektów na podstawie priorytetu. Opisano już, że wstawianie i usuwanie obiektów odbywa się według wzorca FIFO w kolejce Java. Czasami jednak elementy kolejki muszą zostać przetworzone zgodnie z priorytetem i wtedy do akcji wkracza PriorityQueue.
Deklaracja klasy PriorityQueue
Zobaczmy deklarację klasy java.util.PriorityQueue.
public class PriorityQueue extends AbstractQueue implements Serializable
Przykład kolejki priorytetów Java
Nazwa pliku: Kolekcja testowa12.java
zestaw c++
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()); } } }Przetestuj teraz
Wyjście:
head:Amit head:Amit iterating the queue elements: Amit Jai Karan Vijay Rahul after removing two elements: Karan Rahul Vijay
Przykład kolejki priorytetów Java: Book
Zobaczmy przykład PriorityQueue, w którym dodajemy książki do kolejki i drukujemy wszystkie książki. Elementy w PriorityQueue muszą być typu Comparable. Klasy String i Wrapper są domyślnie porównywalne. Aby dodać obiekty zdefiniowane przez użytkownika w PriorityQueue, musisz zaimplementować interfejs Comparable.
Nazwa pliku: LinkedListExample.java
czym jest struktura w strukturze danych
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>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 & 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){>