CodeGym /Blogue Java /Random-PT /Método Queue poll () em Java com exemplos
John Squirrels
Nível 41
San Francisco

Método Queue poll () em Java com exemplos

Publicado no grupo Random-PT

O que é uma Fila?

Assim como o nome indica, Queue é uma estrutura de dados comum em Java seguindo a ordem de inserção First In First Out (FIFO) . Você pode facilmente imaginá-lo como uma fila em uma mercearia. Quanto mais cedo você entra, mais cedo você sai. Isso significa que o elemento adicionado à fila anteriormente também sairá mais cedo. O primeiro elemento (frente) da fila também é chamado de head .Método Queue poll () em Java com exemplos - 2
Fig 1.0: Uma fila simples em Java

O que é o método poll() de Queue?

O método poll() permite que você recupere e remova o elemento mais alto (head) de uma Queue. Em nosso exemplo, ao chamar poll() na fila acima, você receberá '1' como resultado. E haverá apenas 4 elementos restantes na fila.Método Queue poll () em Java com exemplos - 3
Fig 1.1: Depois de usar o método poll() em uma fila

método poll () em Java

Exemplo 1

Dê uma olhada em um exemplo simples de chamada da função poll() na fila mostrada na figura 1.0.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {

	  // create a queue of die rolls 
        Queue dieRoll   = new LinkedList(); 
  
        // Add 6 integers one by one
        dieRoll.add(1); 
        dieRoll.add(2); 
        dieRoll.add(3); 
        dieRoll.add(4); 
        dieRoll.add(5); 
        dieRoll.add(6); 
  
        // print the original queue 
        System.out.println("Queue:\t" + dieRoll + "\n"); 
  
        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n"); 

        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n"); 
        
        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n");        
	}
}
Saída
Fila: [1, 2, 3, 4, 5, 6] poll() retornado: 1 Fila atualizada! [2, 3, 4, 5, 6] poll() retornado: 2 Fila atualizada! [3, 4, 5, 6] poll() retornado: 3 Fila atualizada! [4, 5, 6]
Observe como, após cada chamada poll(), o tamanho da fila é reduzido em 1 e a cabeça é retornada.

Exemplo 2

Vejamos outro exemplo de dias em uma semana. Chamaremos poll() um por um durante a semana e veremos como fica.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {
        
        Queue days   = new LinkedList(); 
        
        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n"); 
  
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n"); 

        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
        
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n");                   
	}
}
Saída
Dias da semana: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado] poll() retornado: Domingo Dias Atualizado! [Segunda-feira, terça-feira, quarta-feira, quinta-feira, sexta-feira, sábado] poll() retornado: Segunda-feira Dias atualizados! [terça-feira, quarta-feira, quinta-feira, sexta-feira, sábado] poll() retornado: dias de terça-feira atualizados! [quarta, quinta, sexta, sábado]

Como poll () é diferente de peek () e remove ()?

É muito fácil para iniciantes misturar os três conceitos diferentes, pois eles parecem bastante semelhantes. Vamos “q” ser uma fila, então veja como eles são diferentes:
  • q.poll() : remove e recupera o início da fila
  • q.peek() : não remove, mas apenas recupera/retorna o início da fila
  • q.remove() : remove e recupera o início da fila
Portanto, parece que remove() e poll() são exatamente iguais. Eles funcionam de forma idêntica em circunstâncias normais. Mas quando a fila está vazia, remove() lança NoSuchElementException , enquanto poll retorna null .

Exemplo 3

Agora vamos dar uma olhada rápida em alguns exemplos das três funções acima.

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {
        
        Queue days   = new LinkedList(); 
        
        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n"); 
  
        // after calling peek()
        System.out.println("peek() returned: " + days.peek()); 
        System.out.println("Week Days: \t" + days + "\n"); 

        System.out.println("peek() returned: " + days.peek()); 
        System.out.println("Week Days: \t" + days + "\n"); 
        
        // after calling remove()
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
        
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
       
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 

        System.out.println("Days Updated!\t" + days + "\n"); 
 
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n");           
        
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("remove() returned: " + days.remove()); 

	}
}
Saída
Dias da semana: [domingo, segunda, terça, quarta, quinta, sexta, sábado] peek() retornado: domingo dias da semana: [domingo, segunda, terça, quarta, quinta, sexta, sábado] peek() retornado: domingo dias da semana : [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado] remove() retornado: Domingo Dias Atualizado! [Segunda, terça, quarta, quinta, sexta, sábado] remove() retornado: Segunda-feira Dias atualizados! [terça-feira, quarta-feira, quinta-feira, sexta-feira, sábado] remove() retornado: terça-feira remove() retornado: quarta-feira remove() retornado: quinta-feira remove() retornado: sexta-feira dias atualizados! [Sábado] enquete() retornou: Dias de sábado atualizados! [] poll() retornado: null Exception in thread "main" java.util.NoSuchElementException at java.util.LinkedList.removeFirst(LinkedList.java:270) at java.util.LinkedList.remove(LinkedList.java:
Como você pode ver, depois de chamar peek(), os dias da semana permanecem os mesmos. E conforme usamos remove() ou poll() o tamanho da fila é reduzido em 1 junto com o retorno da cabeça. Além disso, java.util.NoSuchElementException é lançado quando chamamos remove() em uma fila vazia, enquanto nenhuma exceção é lançada para usar poll() .

Conclusão

No final, esperamos que você esteja familiarizado com o uso e funcionamento do método poll() de Queues. No entanto, em caso de confusão, você sempre pode voltar aqui para consultar. Codificação feliz!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION