offer vs add de fila em Java

Rashmi Patidar 12 outubro 2023
offer vs add de fila em Java

Uma Fila é uma estrutura de dados que permite aos usuários adicionar elementos da maneira Primeiro a entrar, primeiro a sair. Em Java, uma fila é uma interface presente no pacote java.util. É uma estrutura linear que permite elementos ordenados na estrutura de dados.

A coleção é aberta de ambas as extremidades, ou traseira, e frontal. A propriedade permite que objetos sejam adicionados na frente e removidos na parte traseira.

A estrutura oferece vários métodos, e sua descrição está no código a seguir.

import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;

public class Main {
  public static void main(String[] args) {
    Queue queue = new ArrayBlockingQueue(2);
    boolean value = false;
    value = queue.offer(1);
    System.out.println("Offer Returned Value: " + value);
    value = queue.offer(2);
    System.out.println("Offer Returned Value: " + value);
    value = queue.offer(3);
    System.out.println("Offer Returned Value: " + value);

    Queue blockingQueue = new ArrayBlockingQueue(2);
    blockingQueue.add(5);
    blockingQueue.add(10);
    blockingQueue.add(15);
  }
}

O bloco de código acima contém ambas as implementações dos métodos add e offer e fornece a diferença entre ambos. O bloco de código acima instancia uma instância queue usando a palavra-chave new.

A primeira instrução cria um objeto de ArrayBlockingQueue com a capacidade fixa de tamanho dois e a política de acesso padrão. Leva um valor de tamanho como parâmetro. Ele lança uma IllegalArgumentException se a capacidade for menor que um.

O método offer insere o elemento especificado nesta fila após verificar as restrições de capacidade. A função usa o parâmetro como o elemento a ser adicionado. Esta função retorna true se o valor for adicionado ao final da fila; senão, false.

Ele lança uma ClassCastException se a classe do elemento especificado impedir que ele seja adicionado a ele. O NullPointerException é chamado se o valor especificado for nulo. O IllegalArgumentException é lançado se alguma propriedade do elemento impedir que ele seja adicionado à fila.

A instrução print próxima à função offer imprime o valor booleano true ou false. Novamente, um novo ArrayBlockingQueue é instanciado com a capacidade de tamanho two. Ele anexa até duas inserções bem-sucedidas e, em seguida, lança um traço de Exception.

Este método usa um parâmetro como um elemento para adicionar à fila. Ele retorna true sempre que a adição bem-sucedida é feita; caso contrário, ele lança uma IllegalStateException se o valor não puder ser adicionado.

A ClassCastException é lançada se a classe do elemento especificado impedir sua adição. O NullPointerException se o valor especificado for nulo e IllegalArgumentException se uma propriedade deste elemento impedir que seja adicionado à fila.

A única diferença entre os métodos é que o método offer lança true ou false se a adição for feita. Em oposição a isso, o método add lança uma exceção quando não há mais adições possíveis na fila.

Abaixo está a saída resultante do bloco de código acima.

Offer Returned Value: true
Offer Returned Value: true
Offer Returned Value: false
Exception in thread "main" java.lang.IllegalStateException: Queue full
    at java.util.AbstractQueue.add(AbstractQueue.java:98)
    at java.util.concurrent.ArrayBlockingQueue.add(ArrayBlockingQueue.java:312)
    at F11.QueueAddVsOffer.main(QueueAddVsOffer.java:25)
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artigo relacionado - Java Queue