lifo java fifo

lifo - Clase FIFO en Java



lifo java (6)

No tiene que implementar su propia cola FIFO, solo mire la interfaz java.util.Queue y sus implementaciones

Quiero implementar FIFO a través de una clase en Java.

¿Ya existe tal clase? Si no, ¿cómo puedo implementar el mío?

NOTA

Encontré una clase aquí http://www.dcache.org/manuals/cells/docs/api/dmg/util/Fifo.html , pero no contiene dmg.util. *. No sé si ese paquete existe.





Las colas son estructuras de Primero en entrar primero. Su solicitud es bastante vaga, pero supongo que solo necesita la funcionalidad básica que suele aparecer en las estructuras de Queue. Puede ver cómo puede implementarlo here .

Con respecto a su paquete faltante, lo más probable es que necesite descargar o crear el paquete usted mismo siguiendo ese tutorial.


Está buscando cualquier clase que implemente la interfaz Queue , excluyendo PriorityQueue y PriorityBlockingQueue , que no usan un algoritmo FIFO.

Probablemente, una LinkedList usa add (agrega una al final) y removeFirst (elimina una desde el frente y la devuelve) es la más fácil de usar.

Por ejemplo, aquí hay un programa que usa LinkedList para poner en cola y recuperar los dígitos de PI:

import java.util.LinkedList; class Test { public static void main(String args[]) { char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9}; LinkedList<Integer> fifo = new LinkedList<Integer>(); for (int i = 0; i < arr.length; i++) fifo.add (new Integer (arr[i])); System.out.print (fifo.removeFirst() + "."); while (! fifo.isEmpty()) System.out.print (fifo.removeFirst()); System.out.println(); } }

Alternativamente, si sabe que solo desea tratarlo como una cola (sin las características adicionales de una lista vinculada), puede usar la interfaz Queue :

import java.util.LinkedList; import java.util.Queue; class Test { public static void main(String args[]) { char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9}; Queue<Integer> fifo = new LinkedList<Integer>(); for (int i = 0; i < arr.length; i++) fifo.add (new Integer (arr[i])); System.out.print (fifo.remove() + "."); while (! fifo.isEmpty()) System.out.print (fifo.remove()); System.out.println(); } }

Esto tiene la ventaja de permitirle reemplazar la clase concreta subyacente con cualquier clase que proporcione la interfaz Queue , sin tener que cambiar el código demasiado.

Los cambios básicos son cambiar el tipo de fifo a una Queue y usar remove() lugar de removeFirst() , este último no está disponible para la interfaz de Queue .

La llamada a isEmpty() sigue estando bien, ya que pertenece a la interfaz de Collection de la cual Queue es una derivada.