Cola offer vs add en Java

Rashmi Patidar 12 octubre 2023
Cola offer vs add en Java

Una tail es una estructura de datos que permite a los usuarios agregar elementos de la manera primero en entrar, primero en salir. En Java, una tail es una interfaz presente en el paquete java.util. Es una estructura lineal que permite elementos ordenados en la estructura de datos.

La colección está abierta por ambos extremos, o por la parte trasera, y por la parte delantera. La propiedad permite agregar objetos en la parte delantera y quitarlos de la parte trasera.

La estructura ofrece varios métodos y su descripción se encuentra en el código siguiente.

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);
  }
}

El bloque de código anterior contiene ambas implementaciones del método add y offer y proporciona la diferencia entre ambos. El bloque de código anterior crea una instancia de queue utilizando la palabra clave new.

La primera declaración crea un objeto de ArrayBlockingQueue con la capacidad fija de tamaño dos y la política de acceso predeterminada. Toma un valor de tamaño como parámetro. Lanza una IllegalArgumentException si la capacidad es menor que uno.

El método offer inserta el elemento especificado en esta cola después de verificar las restricciones de capacidad. La función toma el parámetro como elemento a agregar. Esta función devuelve true si el valor se agrega al final de la cola; si no, false.

Lanza una ClassCastException si la clase del elemento especificado evita que se le agregue. Se llama a la NullPointerException si el valor especificado es nulo. La IllegalArgumentException se lanza si alguna propiedad del elemento impide que se agregue a la cola.

La declaración print junto a la función offer imprime el valor booleano true o false. Una vez más, se crea una instancia de una nueva ArrayBlockingQueue con la capacidad de tamaño two. Se agrega hasta dos inserciones exitosas y luego arroja un rastro de Exception.

Este método toma un parámetro como elemento para agregar a la cola. Devuelve true cada vez que se realiza la adición correcta; de lo contrario, arroja una IllegalStateException si no se puede agregar el valor.

La ClassCastException se lanza si la clase del elemento especificado impide que se agregue. La NullPointerException si el valor especificado es nulo, y la IllegalArgumentException si una propiedad de este elemento impide que se agregue a la cola.

La única diferencia entre los métodos es que el método offer arroja true o false si se realiza la adición. A diferencia de esto, el método add arroja una excepción cuando no son posibles más adiciones en la cola.

A continuación se muestra la salida resultante del bloque de código anterior.

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

Artículo relacionado - Java Queue