El método offerFirst(E e) de Deque Interface inserta el elemento especificado en el frente de Deque si es posible hacerlo inmediatamente sin violar las restricciones de capacidad. Este método es preferible al método addFirst() ya que este método no arroja una excepción cuando la capacidad del contenedor está llena ya que devuelve falso.
Sintaxis:
boolean offerFirst(E e)
Parámetros: este método acepta un parámetro obligatorio e que es el elemento que se insertará al frente del Deque.
Devoluciones: este método devuelve verdadero en la inserción exitosa; de lo contrario, devuelve falso.
Excepciones: la función arroja cuatro excepciones que se describen a continuación:
- ClassCastException : cuando la clase del elemento a ingresar impide que se agregue a este contenedor.
- IllegalArgumentException : cuando alguna propiedad del elemento impide que se agregue al Deque.
- NullPointerException : cuando el elemento a insertar se pasa como nulo y la interfaz de Deque no permite elementos nulos.
Los siguientes programas ilustran el método offerFirst() de Deque:
Programa 1:
// Java Program Demonstrate offerFirst() // method of Deque when Null is passed import java.util.*; import java.util.concurrent.LinkedBlockingDeque; public class GFG { public static void main(String[] args) throws IllegalStateException { // create object of Deque Deque<Integer> DQ = new LinkedBlockingDeque<Integer>(3); if (DQ.offerFirst(10)) System.out.println("The Deque is not full and 10 is inserted"); else System.out.println("The Deque is full"); if (DQ.offerFirst(15)) System.out.println("The Deque is not full and 15 is inserted"); else System.out.println("The Deque is full"); if (DQ.offerFirst(25)) System.out.println("The Deque is not full and 25 is inserted"); else System.out.println("The Deque is full"); if (DQ.offerFirst(20)) System.out.println("The Deque is not full and 20 is inserted"); else System.out.println("The Deque is full"); // before removing print Deque System.out.println("Deque: " + DQ); } }
The Deque is not full and 10 is inserted The Deque is not full and 15 is inserted The Deque is not full and 25 is inserted The Deque is full Deque: [25, 15, 10]
Programa 2:
// Java Program Demonstrate offerFirst() // method of Queue when Null is passed import java.util.*; import java.util.concurrent.LinkedBlockingDeque; public class GFG { public static void main(String[] args) throws NullPointerException { // create object of Queue Deque<Integer> DQ = new LinkedBlockingDeque<Integer>(); // Add numbers to end of Deque DQ.offerFirst(7855642); DQ.offerFirst(35658786); DQ.offerFirst(5278367); // when null is inserted DQ.offerFirst(null); // before removing print Deque System.out.println("Deque: " + DQ); } }
Producción:
Exception in thread "main" java.lang.NullPointerException at java.util.concurrent.LinkedBlockingDeque.offerFirst(LinkedBlockingDeque.java:342) at GFG.main(GFG.java:21)
Nota: Las otras dos excepciones son internas y dependen del compilador, por lo que no se pueden mostrar en el código.
Referencia: https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html#offerFirst-E-