Clase Cola en Java

De forma similar a como hice en el post anterior (Clase Pila en Java), basado en Cola Estática, hice mi implementación de una clase Cola.

Antes de ver el código, una pequeña observación:

  • La clase Vector la utilizo para guardar cada elemento de la cola
  • Con los atributos inicio y fin, ubico el inicio y el fin de la cola.
  • Cuando desencolo, actualizo el atributo inicio (pero no elimino el elemento de mi clase Vector).
  • Si elijo eliminarlo, no necesito de los atributos inicio y fin, solo me bastaría un atributo size, pues cuando elimino el elemento de la clase Vector, esta me reindexa los elementos disponibles.

En el código, podemos ver ambas alternativas:

  • Eliminando el elemento de la clase Vector , con un único atributo size para la clase.
  • Sin eliminar el elemento y haciendo uso de los atributos inicio y fin (estas líneas podrán verlas comentadas)



[JAVA]
package colas;

import java.util.Vector;

public class Cola {

//private int inicio;
//private int fin;
private int size;
private Vector elementos;

public Cola() {
super();
elementos = new Vector();
//inicio = fin = 0;
size = 0;
}

public boolean colaVacia () {
//if ( (fin-inicio)==0) {
if ( size==0) {
return true;
}
return false;
}

public void encolar ( Tipo o ) {
//elementos.add(fin++, o);
elementos.add(size++, o);
}

public Tipo desencolar () {
Tipo retorno;

try {
if(colaVacia())
throw new ErrorColaVacia();
else {
//return elementos.get(inicio++);
retorno = elementos.get(0);
elementos.remove(0);
size--;
return retorno;
}
} catch(ErrorColaVacia error) {
System.out.println("ERROR: la cola esta vacía");
return null;
}
}

/*
public int getFin() {
return fin;
}

public int getInicio() {
return inicio;
}
*/
public int getSize() {
//return (fin-inicio);
return (size);
}
}

@SuppressWarnings("serial")
class ErrorColaVacia extends Exception {
public ErrorColaVacia() {
super();
}
}
[/JAVA]


[JAVA]
package colas;

public class Test {

@SuppressWarnings("unchecked")
public static void main(String[] args) {
Cola cola;

cola = new Cola();
System.out.println("Elementos en cola: " + cola.getSize());

cola.encolar("Uno");
System.out.println("Elementos en cola: " + cola.getSize());

cola.encolar("Dos");
System.out.println("Elementos en cola: " + cola.getSize());

System.out.println("Extraigo.........: " + cola.desencolar().toString());
System.out.println("Elementos en cola: " + cola.getSize());

cola.encolar("Tres");
System.out.println("Elementos en cola: " + cola.getSize());

System.out.println("Extraigo.........: " + cola.desencolar().toString());
System.out.println("Elementos en cola: " + cola.getSize());

System.out.println("Extraigo.........: " + cola.desencolar().toString());
System.out.println("Elementos en cola: " + cola.getSize());

System.out.println("Extraigo.........: " + cola.desencolar().toString());
System.out.println("Elementos en cola: " + cola.getSize());

}

}
[/JAVA]

13 comentario en este artículoDeje el suyo
  1. esta un poco complejo podrias mejorarlo si no utilizaras el vector

  2. viejo… necesito que me hagas un favor urgente jejeje…. es que necesito saber como hago para comparar lo que me entre a mi cola… para tenerle prioridad a algunas cosas…
    te pongo un ejemplo simple y ojala me de a entender:

    tengo pacientes de urgencias; entran a mi cola dependiendo el color que les ponga de prioridad, y hay dos clases de rojos… entonces necesito compara lo que le entre a mi cola para ver que puede salir de ella mas rapido y/o primero que el resto de paciente!!!

    si me puedes ayudar te lo agradezco mucho!
    gracias de ante mano.
    saludos!

  3. esto es bvien chido no ay mada como esto

  4. muchas gracias por tu explicación

  5. necesito un favorsote me pueden ayudar con este programa es de pilas:
    Se tiene un almacén donde se encuentran las neveras fabricadas por una planta, las primeras neveras que fueron fabricadas están de últimas, dentro del almacén y las últimas neveras fabricadas, aparecen de primeras dentro del almacén. Los datos de cada nevera son código y descripción. El almacén dispone de una sola puerta, por donde entran las neveras a ser almacenadas y salen las neveras que se van a distribuir a las tiendas. Adicionalmente, se tiene una cola de solicitudes de neveras realizadas por las tiendas, donde aparece el nombre de la tienda y la cantidad solicitada de neveras, elabore un algoritmo que permita asignar a cada tienda las neveras, generando una nueva estructura que contenga la tienda y el código de las neveras asignadas para las ordenes de salidas de las mismas.

  6. Jonathanco22.. en donde dice de “”..necesito saber como hago para comparar lo que me entre a mi cola…” xD sin palabras

  7. Muy bien, me gusta, por mi parte implemente uno mas sencillo.

    http://usandojava.blogspot.com/2012/01/implementacion-de-pila-y-cola.html

  8. Hermano me salvaste la vida! anda perfecto! estupendo trabajo

  9. hola tengo un problemita me gustaria saber como puedo hacer una cola en java
    pero solo utilizando metodos ya que no puedo usar palabras reservadas, para ello
    debo crear los metodos
    estado de la cola si esta llena o vacia y que elementos tiene en ella
    llenar la cola
    buscar un elemento en la cola
    eliminar el primer elemento de la cola y recorrer los demas al principio
    y mostrar la cola plis si pudieras darme una idea de la estructura te lo agradeceria

  10. azirally, lo que debes implementar es una lista; y luego partiendo de alli implementas los metodos de la cola.

    Aqui implemente una lista, te servira.

    http://usandojava.blogspot.com/2011/12/implementacion-de-una-lista-simple.html

  11. ola la vdd es que no tengo idea de como hacer grafos en java y tengo que hacerlo con una matriz de adyacencia, la vdd te agradeceria muxo si pudieras ayudarme.

  12. tengo problemas con un programa en donde tengo que hacer una comunicacion ente hilos y una motorizacion porfas aiiudame porkee mii cerebroo iia no da pa mass la vdd no see komo empesar algoo asiii…. :( porfas aiiudame…..

  13. algien m podria ayudar con un programa de colas donde tengo k simular el planteamiemto d un problema real de centro comercial donde simulemos el tiempo en el k las personas tardan en ser atendidos……en java x fis :(

Deje su comentario

Por favor, ingrese su nombre

Por favor, ingrese un correo-e válido

Por favor, ingrese su mensaje

luauf.com 2014

WordPress