2011-07-26 14 views
6

En java doc:¿Cómo la implementación de java.util.queue usa LIFO?

[...] Entre las excepciones son colas de prioridad, que ordenan elementos de acuerdo con un comparador suministrado, o ordenamiento natural de los elementos y colas LIFO (o pilas) que ordenan la elementos LIFO (último en entrar, primero en salir)

Cómo implemetion de java.util.queue utiliza LIFO en lugar de FIFO?

+0

¿Cuál es tu pregunta? La cola como estructura de datos normalmente es FIFO y Stack ya que una estructura de datos es normalmente LIFO. – Marcelo

+0

¿Desea implementar la cola FIFO utilizando la estructura de datos LIFO? – user802421

+0

+1 por pregunta. En mi libro me he encontrado siguiendo una cita confusa: ** Queue es una interfaz base para contenedores que contiene una secuencia de elementos para el procesamiento . Por ejemplo, las clases que implementan Queue pueden ser LIFO (último en, primero como estructura de datos de pila) o FIFO (primero en entrar, primero en salir como en la estructura de datos de cola ). ** – gstackoverflow

Respuesta

4

Stack y LinkedList ofrecen aquí son sólo unas colecciones. Queue no es una colección. Es parte del paquete de concurrencia y se puede usar con grupos de subprocesos.

Acabo de verificar nuevamente y leo javadoc que ha citado. Creo que la única opción para utilizar la cola LIFO es utilizar la cola de prioridad con el comparador personalizado que compara los elementos de acuerdo con el tiempo de inserción en orden inverso.

+0

un código de ejemplo? – celsowm

+0

No tengo ejemplo en este momento. Simplemente busque ejemplos de uso de cola de prioridad. Encontrarás mucho. Solo recuerda que los objetos que vas a poner en cola deben contener el campo "marca de tiempo" y el Comparador que implementarás usará este campo en su método compareTo(). – AlexR

7

Puede usar un java.util.LinkedList y usar los métodos pop() y push() y usarlo como una pila, que es una cola LIFO.

2

Queue es una estructura de datos que utiliza una técnica de Primero en entrar, primero en salir.

Aquí hay un enlace útil: magi.toolkit.util.queue Class LIFOQueue

Una implementación de un "último en entrar, primero en salir" cola. Básicamente, un LIFO Queue es una pila.

+0

Ha editado, y lo haré eliminar mi voto abajo. – Marcelo

+0

¿podría verificar el enlace? Creo que alguien más pudo haber comprado el dominio. –

2

deque se puede utilizar como LIFO o FIFO

15

Se puede utilizar cualquier deque como una cola LIFO utilizando el método Collections.asLifoQueue:

Queue<Integer> arrayLifoQueue = Collections.asLifoQueue(new ArrayDeque<Integer>()); 
Queue<Integer> linkedListLifoQueue = Collections.asLifoQueue(new LinkedList<Integer>()); 
Cuestiones relacionadas