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 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