AbstractQueue en Java con ejemplos

La clase AbstractQueue en Java es parte de Java Collection Framework e implementa la interfaz Collection y la clase AbstractCollection . Proporciona implementaciones esqueléticas de algunas operaciones de cola . Las implementaciones en esta clase son apropiadas cuando la implementación base no permite elementos nulos. Los métodos add, remove y element se basan en la oferta, la encuesta y el vistazo, respectivamente, pero lanzan excepciones en lugar de indicar fallas a través de devoluciones falsas o nulas. Jerarquía de clases:
 

java.lang.Object
 ↳ java.util.AbstractCollection<E>
    ↳ Class AbstractQueue<E>

AbstractQueue in Java

Esta clase implementa interfaces Iterable<E> , Collection<E> , Queue<E> y extiende AbstractCollection

Declaración: 

clase abstracta pública AbstractQueue<E> extiende AbstractCollection<E> implementa Queue<E> 
 

E – Tipo de elemento mantenido por la clase o interfaz Collection Framework.

Constructores en Java AbstractQueue

Dado que AbstractQueue es una clase abstracta, su implementación la proporcionan sus subclases. A continuación se muestra la lista de clases que pueden proporcionar la implementación. Para crearlo, lo necesitamos desde java.util.AbstractQueue .

protected AbstractQueue() : El constructor predeterminado, pero al ser abstracto, no permite crear un objeto AbstractQueue. La implementación debe ser proporcionada por una de sus subclases como ArrayBlockingQueue , ConcurrentLinkedQueue , DelayQueue , LinkedBlockingDeque , LinkedBlockingQueue , LinkedTransferQueue , PriorityBlockingQueue , PriorityQueue , SynchronousQueue .

AbstractQueue<E> objName = new ArrayBlockingQueue<E>();

 A continuación se muestra un programa de muestra para ilustrar AbstractQueue en Java: 
 

Java

// Java code to illustrate AbstractQueue
 
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
 
public class AbstractQueueExample {
 
    public static void main(String[] argv) throws Exception
    {
        // Creating object of AbstractQueue<Integer>
        AbstractQueue<Integer> AQ = new LinkedBlockingQueue<Integer>();
 
        // Adding elements to the Queue
        AQ.add(10);
        AQ.add(20);
        AQ.add(30);
        AQ.add(40);
        AQ.add(50);
 
        // print the queue contents to the console
        System.out.println("AbstractQueue contains: " + AQ);
    }
}
Producción: 

AbstractQueue contains: [10, 20, 30, 40, 50]

 

Operaciones básicas

1. Agregar elementos

Para agregar elementos a AbstractQueue, proporciona dos métodos. El método add(E e) inserta el elemento especificado en esta cola si es posible hacerlo inmediatamente sin violar las restricciones de capacidad. Devuelve verdadero en caso de éxito y lanza una IllegalStateException si no hay espacio disponible actualmente. El método addAll(E e) agrega todos los elementos de la colección especificada a esta cola.

Java

// Java program to illustrate the
// adding elements to the AbstractQueue
 
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
 
public class AddingElementsExample {
 
    public static void main(String[] argv) throws Exception
    {
        // Since AbstractQueue is an abstract class
        // create object using LinkedBlockingQueue
        AbstractQueue<Integer> AQ1 = new LinkedBlockingQueue<Integer>();
 
        // Populating AQ
        AQ1.add(10);
        AQ1.add(20);
        AQ1.add(30);
        AQ1.add(40);
        AQ1.add(50);
 
        // print AQ
        System.out.println("AbstractQueue contains : "
                           + AQ1);
 
        // Since AbstractQueue is an abstract class
        // create object using LinkedBlockingQueue
        AbstractQueue<Integer> AQ2 = new LinkedBlockingQueue<Integer>();
 
        // print AQ2 initially
        System.out.println("AbstractQueue2 initially contains : " + AQ2);
 
        // adds elements of AQ1 in AQ2
        AQ2.addAll(AQ1);
 
        System.out.println( "AbstractQueue1 after addition contains : " + AQ2);
    }
}

 

Producción

AbstractQueue contains : [10, 20, 30, 40, 50]
AbstractQueue2 initially contains : []
AbstractQueue1 after addition contains : [10, 20, 30, 40, 50]

2. Elimina los Elementos 

Para eliminar los elementos de AbstractQueue, proporciona métodos remove() y clear().

Java

// Java program to illustrate the
// removal of elements from AbstractQueue
 
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
 
public class RemovingElementsExample {
    public static void main(String[] argv) throws Exception
    {
        // Since AbstractQueue is an abstract class
        // create object using LinkedBlockingQueue
        AbstractQueue<Integer> AQ1 = new LinkedBlockingQueue<Integer>();
 
        // Add elements using add method
        AQ1.add(10);
        AQ1.add(20);
        AQ1.add(30);
        AQ1.add(40);
        AQ1.add(50);
 
        // print the queue contents to the console
        System.out.println("AbstractQueue1 contains : " + AQ1);
 
        // Retrieves the head
        int head = AQ1.remove();
 
        // print the head element to the console
        System.out.println("head : " + head);
 
        // print the modified queue
        System.out.println("AbstractQueue1 after removal of head : " + AQ1);
 
        // remove all the elements
        AQ1.clear();
 
        // print the modified queue
        System.out.println("AbstractQueue1 : " + AQ1);
    }
}

 

Producción

AbstractQueue1 contains : [10, 20, 30, 40, 50]
head : 10
AbstractQueue1 after removal of head : [20, 30, 40, 50]
AbstractQueue1 : []

3. Accediendo a los Elementos

El método element() de AbstractQueue recupera, pero no elimina, la cabeza de esta cola.

Java

// Java program to illustrate the
// accessing element from AbstractQueue
 
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
 
public class AccessingElementExample {
 
    public static void main(String[] argv) throws Exception
    {
        // Since AbstractQueue is an abstract class
        // create object using LinkedBlockingQueue
        AbstractQueue<Integer> AQ1 = new LinkedBlockingQueue<Integer>();
 
        // Populating AQ1 using add method
        AQ1.add(10);
        AQ1.add(20);
        AQ1.add(30);
        AQ1.add(40);
        AQ1.add(50);
 
        // print AQ to the console
        System.out.println("AbstractQueue1 contains : " + AQ1);
 
        // access the head element
        System.out.println("head : " + AQ1.element());
    }
}

 

Producción

AbstractQueue1 contains : [10, 20, 30, 40, 50]
head : 10

Métodos de AbstractQueue

MÉTODO

DESCRIPCIÓN

agregar​(E e) Inserta el elemento especificado en esta cola si es posible hacerlo de inmediato sin infringir las restricciones de capacidad, devolviendo verdadero en caso de éxito y lanzando una IllegalStateException si no hay espacio disponible actualmente.
addAll​(Colección<? extiende E> c) Agrega todos los elementos de la colección especificada a esta cola.
clear() Elimina todos los elementos de esta cola.
elemento() Recupera, pero no elimina, el encabezado de esta cola.
retirar() Recupera y elimina el encabezado de esta cola.

Métodos declarados en la clase java.util.AbstractCollection

MÉTODO

DESCRIPCIÓN

contiene​(Objeto o) Devuelve verdadero si esta colección contiene el elemento especificado.
contieneTodo​(Colección<?> c) Devuelve verdadero si esta colección contiene todos los elementos de la colección especificada.
esta vacio() Devuelve verdadero si esta colección no contiene elementos.
iterador() Devuelve un iterador sobre los elementos contenidos en esta colección.
eliminar​(Objeto o) Elimina una sola instancia del elemento especificado de esta colección, si está presente (operación opcional).
removeAll​(Colección<?> c) Elimina todos los elementos de esta colección que también están contenidos en la colección especificada (operación opcional).
retenerTodo​(Colección<?> c) Retiene solo los elementos de esta colección que están contenidos en la colección especificada (operación opcional).
aArray() Devuelve una array que contiene todos los elementos de esta colección.
a la Array​(T[] a) Devuelve una array que contiene todos los elementos de esta colección; el tipo de tiempo de ejecución de la array devuelta es el de la array especificada.
Enstringr() Devuelve una representación de string de esta colección.

Métodos declarados en la interfaz java.util.Collection

MÉTODO

DESCRIPCIÓN

contiene​(Objeto o) Devuelve verdadero si esta colección contiene el elemento especificado.
contieneTodo​(Colección<?> c) Devuelve verdadero si esta colección contiene todos los elementos de la colección especificada.
es igual a​(Objeto o) Compara el objeto especificado con esta colección para la igualdad.
código hash() Devuelve el valor del código hash para esta colección.
esta vacio() Devuelve verdadero si esta colección no contiene elementos.
iterador() Devuelve un iterador sobre los elementos de esta colección.
flujoParalelo() Devuelve un Stream posiblemente paralelo con esta colección como fuente.
eliminar​(Objeto o) Elimina una sola instancia del elemento especificado de esta colección, si está presente (operación opcional).
removeAll​(Colección<?> c) Elimina todos los elementos de esta colección que también están contenidos en la colección especificada (operación opcional).
removeIf​(predicado<? filtro super E>) Elimina todos los elementos de esta colección que satisfacen el predicado dado.
retenerTodo​(Colección<?> c) Retiene solo los elementos de esta colección que están contenidos en la colección especificada (operación opcional).
Talla() Devuelve el número de elementos de esta colección.
divisor() Crea un Spliterator sobre los elementos de esta colección.
corriente() Devuelve un Stream secuencial con esta colección como fuente.
aArray() Devuelve una array que contiene todos los elementos de esta colección.
toArray​(IntFunction<T[]> generador) Devuelve una array que contiene todos los elementos de esta colección, utilizando la función de generador proporcionada para asignar la array devuelta.
a la Array​(T[] a) Devuelve una array que contiene todos los elementos de esta colección; el tipo de tiempo de ejecución de la array devuelta es el de la array especificada.

Métodos declarados en la interfaz java.lang.Iterable

MÉTODO

DESCRIPCIÓN

forEach​(Consumidor<? super T> acción) Realiza la acción dada para cada elemento del iterable hasta que se hayan procesado todos los elementos o la acción genere una excepción.

Métodos declarados en la interfaz java.util.Queue

MÉTODO

DESCRIPCIÓN

oferta​(E e) Inserta el elemento especificado en esta cola si es posible hacerlo inmediatamente sin violar las restricciones de capacidad.
ojeada() Recupera, pero no elimina, el encabezado de esta cola o devuelve un valor nulo si esta cola está vacía.
encuesta() Recupera y elimina el encabezado de esta cola, o devuelve un valor nulo si esta cola está vacía.

Referencia: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/AbstractQueue.html

Publicación traducida automáticamente

Artículo escrito por RishabhPrabhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *