Colas en Java

Colas - Queue

Las Colas son Estructuras de Datos, que a diferencia de las Pilas estas trabajan con una estructura de tipo FIFO (First In, First Out), el primero en entrar sera el primero en salir. Podriamos pensar en el funcionamiento que tienen las colas en los Supermercados, o en los Bancos, o en las Estaciones de Servicios, conforme va llegando el cliente se va encolando en el ultimo que esta en la cola, y el primero que esta en la cola es el primero que recibe el servicio.
Las Colas son secuencia de elementos o colección de objeto en la que la insercion de los datos se realiza por un extremo que es el final de la cola(ultimo cliente que llega a la cola), y la operacion de extraccion por el inicio de la cola
JAVA nos proporciona su interfaz Queue(Colas en español), con los metodos necesarios para poder crear y manipular las colas en java.
Las Operaciones basicas para el manejo de una Cola son:
  • offer(E item)
    • Este metodo tienen como parametro un objeto, que es el que vamos a introducir en nuestra Cola.
  • poll()
    • Este metodo nos permite eliminar o sacar un elemento de nuestra Cola, nos retorna el objeto eliminado.
  • peek()
    • Este metodo nos sirve de consulta, nos retorna el primer elemento de nuestra Cola, sin eliminarlo.

Clase LinkedList

La interfaz Queue implementa a la Clase LinkedList, la cual nos permite manejar una cola como una lista. Implementa todas las operaciones de lista opcional, y permiten todos los elementos (incluyendo null).
Tenga en cuenta que esta aplicación no está sincronizado. Si varios subprocesos tienen acceso a una lista enlazada al mismo tiempo, y al menos uno de los hilos modifica la lista estructuralmente, que debe ser sincronizado externamente. (Una modificación estructural es cualquier operación que añade o elimina uno o más elementos;. Simplemente estableciendo el valor de un elemento no es una modificación estructural) Esto se realiza generalmente mediante la sincronización en algún objeto que encapsula naturalmente la lista. Si no existe tal objeto, la lista debe ser "envuelto" con el Collections.synchronizedList método. Esto se hace mejor a la hora de la creación, para evitar el acceso no sincronizado accidental a la lista:

List list = Collections.synchronizedList(new LinkedList(...));

Los iteradores devueltos por esta clase de iterador y ListIterator métodos son a prueba de rápido : si la lista se modifica estructuralmente en cualquier momento después de crear el iterador, de ninguna manera, excepto a través del propio Iterator quitar o agregar métodos, el iterador lanzará un ConcurrentModificationException . Así, en la cara de la modificación concurrente, el iterador falla rápida y limpia, en lugar de correr el riesgo de comportamiento arbitrario, no determinista en un tiempo indeterminado en el futuro.

Para poder crear Colas en JAVA tenemos que importar la clase a nuestro proyecto, y luego crearnos un objeto para poder acceder a los metodos de la clase.

import java.util.Queue;

 public class MyClase {
    
    private Queue cola;

    public MyClase() {
        this.cola = new LinkedList();
    }
 }
 
Throws exception Retorna un valor
Insertar add(e) offer(e)
Remover remove() poll()
Examinar element() peek()

Clase Queue Documentación JAVA


Ver video del Proyecto
Descarga Proyecto Colas