logo

Interface de fila Java

A interface Queue está disponível no pacote java.util e estende a interface Collection. É usado para manter os elementos que são processados ​​​​na maneira First In First Out (FIFO). É uma lista ordenada de objetos, onde a inserção dos elementos ocorre no final da lista e a remoção dos elementos ocorre no início da lista.

Por ser uma interface, a fila requer, para a declaração, uma classe concreta, e as classes mais comuns são LinkedList e PriorityQueue em Java. As implementações feitas por essas classes não são seguras para threads. Se for necessário ter uma implementação segura de thread, PriorityBlockingQueue é uma opção disponível.

Declaração de interface de fila

 public interface Queue extends Collection 

Métodos de interface de fila Java

Método Descrição
adição booleana (objeto) É usado para inserir o elemento especificado nesta fila e retornar verdadeiro em caso de sucesso.
oferta booleana (objeto) É usado para inserir o elemento especificado nesta fila.
Remover objeto() É usado para recuperar e remover o cabeçalho desta fila.
Pesquisa de objeto() É usado para recuperar e remover o cabeçalho desta fila ou retornar nulo se esta fila estiver vazia.
Elemento objeto() É usado para recuperar, mas não remover, o cabeçalho desta fila.
Espiar objeto() É usado para recuperar, mas não remover, o cabeçalho desta fila, ou retornar nulo se esta fila estiver vazia.

Recursos de uma fila

A seguir estão alguns recursos importantes de uma fila.

  • Conforme discutido anteriormente, o conceito FIFO é usado para inserção e exclusão de elementos de uma fila.
  • O Java Queue fornece suporte para todos os métodos da interface Collection, incluindo exclusão, inserção, etc.
  • PriorityQueue, ArrayBlockingQueue e LinkedList são as implementações usadas com mais frequência.
  • O NullPointerException é gerado se alguma operação nula for feita em BlockingQueues.
  • As filas que estão presentes no útil pacote são conhecidos como Filas ilimitadas.
  • As filas que estão presentes no útil pacote são conhecidos como filas limitadas.
  • Todas as filas, exceto as Deques, facilitam a remoção e inserção no início e no final da fila; respectivamente. Na verdade, os deques suportam a inserção e remoção do elemento em ambas as extremidades.

Classe PriorityQueue

PriorityQueue também é uma classe definida na estrutura de coleção que nos fornece uma maneira de processar os objetos com base na prioridade. Já está descrito que a inserção e exclusão de objetos segue o padrão FIFO na fila Java. Porém, às vezes é necessário que os elementos da fila sejam processados ​​​​de acordo com a prioridade, é aí que entra um PriorityQueue.

Declaração de classe PriorityQueue

Vamos ver a declaração da classe java.util.PriorityQueue.

 public class PriorityQueue extends AbstractQueue implements Serializable 

Exemplo de PriorityQueue Java

Nome do arquivo: 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()); } } } 
Teste agora

Saída:

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

Exemplo Java PriorityQueue: Livro

Vamos ver um exemplo de PriorityQueue onde adicionamos livros à fila e imprimimos todos os livros. Os elementos em PriorityQueue devem ser do tipo Comparable. As classes String e Wrapper são comparáveis ​​por padrão. Para adicionar objetos definidos pelo usuário em PriorityQueue, você precisa implementar a interface Comparable.

Nome do arquivo: LinkedListExample.java

verificação nula de 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){>