A Cola está diseñado de tal manera que los elementos que se le agregan se colocan al final de la Cola y se eliminan del principio de la Cola. El concepto aquí es similar a la cola que vemos en nuestra vida diaria, por ejemplo, cuando se lanza un nuevo iPhone, estamos haciendo cola fuera de la Apple Store, cualquiera que se agregue a la cola debe pararse al final y las personas se atienden en base en FIFO (Primero en entrar, primero en salir), el que obtiene el iPhone se elimina del principio de la cola.

Jerarquía Java de la interfaz de cola


La interfaz de cola en las colecciones de Java tiene dos implementaciones: LinkedList es PriorityQueue, estas dos clases implementan la interfaz Queue.
La cola es una interfaz por lo que no podemos instanciarlo, sino que creamos una instancia de LinkedList o PriorityQueue y asígnelo a la cola así:

Queue q1 = new LinkedList();
Queue q2 = new PriorityQueue();

Ejemplo de cola de Java

import java.util.*;
public class QueueExample1 {
	 
   public static void main(String[] args) {
	  
      /*
       * We cannot create instance of a Queue as it is an
       * interface, we can create instance of LinkedList or
       * PriorityQueue and assign it to Queue
       */
      Queue<String> q = new LinkedList<String>();
	    
      //Adding elements to the Queue
      q.add("Rick");
      q.add("Maggie"); 
      q.add("Glenn");
      q.add("Negan");
      q.add("Daryl");
	    
      System.out.println("Elements in Queue:"+q);

      /*
       * We can remove element from Queue using remove() method,
       * this would remove the first element from the Queue 
       */
      System.out.println("Removed element: "+q.remove());
	    
      /*
       * element() method - this returns the head of the
       * Queue. Head is the first element of Queue
       */
      System.out.println("Head: "+q.element());
	    
      /*
       * poll() method - this removes and returns the 
       * head of the Queue. Returns null if the Queue is empty
       */
      System.out.println("poll(): "+q.poll());
	    
      /*
       * peek() method - it works same as element() method,
       * however it returns null if the Queue is empty
       */
      System.out.println("peek(): "+q.peek());
	    
      //Again displaying the elements of Queue
      System.out.println("Elements in Queue:"+q);
   }
}

Producción:

Elements in Queue:[Rick, Maggie, Glenn, Negan, Daryl]
Removed element: Rick
Head: Maggie
poll(): Maggie
peek(): Glenn
Elements in Queue:[Glenn, Negan, Daryl]

En el ejemplo anterior, usé Generics, esto nos ayuda a especificar el tipo de elemento que vamos a poner en la colección. Como puede ver, he especificado el tipo de cola como una cadena usando genéricos, por lo que solo acepta elementos de cadena. Si intenta agregar un elemento de tipo no especificado, obtendrá un error de compilación, esto aporta seguridad a nuestro programa y lo hace menos propenso a errores.

Métodos de interfaz de cola

suma booleana (E y): Este método agrega el elemento especificado al final de la cola. Devuelve verdadero si el artículo se agrega correctamente o falso si el artículo no se agrega, lo que básicamente sucede cuando la cola está en su capacidad máxima y no puede aceptar más artículos.

leer  Ejemplo de método Java ArrayList remove (int index)

Y elemento (): este método devuelve el encabezado (el primer elemento) de la cola.

oferta booleana (objeto): Es lo mismo que el método add ().

Y quitar (): Este método elimina el encabezado (primer elemento) de la cola y devuelve su valor.

Y encuesta (): Este método es casi el mismo que el método remove (). La única diferencia entre poll () y remove () es que el método poll () devuelve nulo si la cola está vacía.

Y asoma (): Este método es casi el mismo que el método element (). La única diferencia entre peek () y element () es que el método peek () devuelve nulo si Queue está vacío.

Hemos visto cómo una cola atiende solicitudes sobre la base de FIFO (primero en entrar, primero en salir). ¿Y si quisiéramos atender la solicitud en función de la prioridad en lugar de FIFO? Esto se puede hacer con la ayuda de PriorityQueue, que atiende la solicitud en función de la prioridad, que establecemos mediante Comparator.

Por avivcas

Deja una respuesta

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