HOWTO · Java
offer vs add de fila em Java
Este artigo apresenta a diferença entre os métodos de offer e add de fila em Java.
Nesta página
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)