Solo veo una interfaz Queue, ¿no hay clase Queue en las Colecciones Java?¿Dónde está la clase Queue en las Colecciones de Java?
Respuesta
La documentación para Queue
enumera varias implementaciones, incluyendo
elegir una aplicación que se adapte a sus necesidades.
El Javadocs proporciona una lista de clases que implementan Queue
.
Todas las clases de implementación conocidos:
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingQueue, LinkedBlockingDeque, LinkedList, PriorityBlockingQueue, PriorityQueue, SynchronousQueue
También hay algunos subinterfaces cuales puede ser útil:
Todos Subinterfaces conocidos:
BlockingDeque < E>, BlockingQueue < E>, Deque < E>
Me pregunto por qué la gente no va a JavaDocs: P +1 – Perpetualcoder
¿no es el desbordamiento de pila más rápido que google? – IAdapter
Para la gente realmente floja, voy a notar que todos los que tienen DeQue son colas de doble final. – Powerlord
cola tiene múltiples implementaciones: desde la API:
Todos Clases de implementación conocidas:
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue,
DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList,
PriorityBlockingQueue, PriorityQueue, SynchronousQueue
Tenga en cuenta que AbstractQueue no es una clase concreta.
Algunos de estos son del paquete concurrente, por lo que si está implementando una cola de trabajo o algo similar, debe ir a ConcurrentLinkedQueue o PriorityBlockingQueue (para un montón) para ej.
http://java.sun.com/javase/6/docs/api/java/util/Queue.html - ver sección "Todas las clases de implementación conocidas". Hay una variedad de implementaciones que son adecuadas para diferentes propósitos.
Además de usar los documentos de API para encontrar "todas las clases de implementación conocidas", a menudo hay otras implementaciones no públicas que, sin embargo, están disponibles a través de la API pública (solo sin requerir resmas de documentación inútil). Si hace clic en "use", también encontrará Collections.asLifoQueue (Deque
ya es un Queue
, pero es FIFO en lugar de una pila).
De vez en cuando, redescubro las páginas de "Uso" y pienso: "¡Oye, esto es genial!" Y luego los olvido de nuevo. –
Las páginas de "uso" no tienen la mayor cantidad de UI. –
Aunque las respuestas suenan algo desdeñosas, en realidad están siendo geniales enseñándote a pescar.Una cola es simplemente una forma de ver una colección, por lo que muchas colecciones pueden implementarla. Además, las cosas que actúan como colecciones pero con otra lógica específica (como las colas de hilos) pueden usar la misma interfaz.
Saber dónde mirar los javadocs es de gran ayuda. Estoy seguro de que miraste pero no pensaste en mirar las implementaciones. Vive y aprende.
A veces también puede tener que buscar listas de subclase/extensiones. Como si mirases a Queue y veas AbstractQueue, es posible que quieras ver qué clases implementan eso.
Me desharé de uno de sus -1S para ti :)
import java.util.Queue;
sólo que
Enqueue function == Queue_Object.add(input_value);
Dequeue function == Queue_Object.pull(); //return the value and delete it from queue
No, no hay una clase Queue
, porque hay un montón de diferentes maneras para implementar una cola y debes elegir la que mejor se adapte a tu caso de uso. Lo mismo ocurre con cualquiera de las otras colecciones en el marco de colecciones; por ejemplo, ArrayList
y LinkedList
ambos implementan un List
. El patrón general, que es un buen uso de la herencia de objetos, es:
La interfaz , p. Queue
, define el rol que desea que juegue un objeto;
Subinterfaces, p. Ej. Deque
, amplía o especializa el rol; en este caso, una cola "deque" o de doble extremo le permite agregar y eliminar elementos de ambos extremos de la cola, en lugar de solo agregar al reverso y eliminar desde el frente;
Las clases proporcionan la implementación de cómo un objeto lleva a cabo la función. Por ejemplo, un ArrayDeque
usa una matriz redimensionable para implementar una cola de doble extremo, que tiene diferentes fortalezas y debilidades a LinkedList
que usa una lista vinculada.
dar más detalles sobre la idea de una interfaz como un papel, tenga en cuenta que a pesar de que implementa ArrayDeque
Deque
, se puede usar como un Queue
sin tener que preocuparse de que, debido a la implementación de ambas interfaces significa que puede desempeñar ambos papeles. Del mismo modo, LinkedList
puede usar un sombrero List
, Queue
o Deque
.
Por esta razón, la forma normal (recomendada) de usar algo como el marco de colecciones es programa a la interfaz, es decir, utilizar una interfaz cuando se usa la clase en lugar del nombre de la clase. Por ejemplo, podría crear un objeto como éste:
Queue<String> logQueue = new ConcurrentLinkedQueue<String>();
...
logQueue.add("Log message");
De esta manera usted está
- no están vinculados a una clase particular y puede utilizar una gota en el reemplazo si es necesario sin tener que modificar mucho código, y
- están documentando lo que está haciendo con una clase nombrando la función que desempeña. El principio general con el que se ayuda es código de auto-documentación, que es esencialmente para permitir que el código sea autoexplicativo sin tener que usar comentarios, etc.
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
queue.add(3);
while (!queue.isEmpty()) {
System.out.println(queue.remove());// prints 1 2 3
}
- 1. ¿Dónde está la clase SampleZipfileProvider?
- 2. ¿Dónde está la clase weblogic.jndi.WLInitialContextFactory?
- 3. implementaciones de Java Queue, ¿cuál?
- 4. ¿Dónde está Polygon.Doble en Java?
- 5. colecciones java vs mapa en colecciones framework
- 6. ¿Cuáles son las ventajas de Blocking Queue en Java?
- 7. ¿Dónde declarar las constantes de clase?
- 8. ¿Dónde debería usar las implementaciones de BlockingQueue en lugar de las implementaciones de Simple Queue?
- 9. Colecciones Java (estructura LIFO)
- 10. ¿Mejor implementación de Java Queue?
- 11. ¿Dónde está mi directorio java?
- 12. Microsoft Message Queue. ¿Está desaprobado?
- 13. ¿Dónde está la clase Asistida en el jarro Guice?
- 14. ¿Está marcada la clase de excepción java?
- 15. ¿Dónde llamar a las funciones ini_set() en la clase?
- 16. Iteraciones sobre colecciones de Java en Scala
- 17. Comparación de dos colecciones en Java
- 18. Java problema colecciones covarianza
- 19. personalización serialización de las colecciones de Java utilizando xstream
- 20. ¿Dónde está la encapsulación?
- 21. Colecciones de Java.shuffle está haciendo qué?
- 22. ¿Dónde está el modelo de clase en Xcode 4?
- 23. Java Commons Colecciones removeAll
- 24. ¿Dónde se almacenan las clases de Java en Oracle?
- 25. ¿Dónde está setVisible en la paleta Netbeans?
- 26. Dónde está CodeGenerationTools
- 27. Encuentra dónde se carga la clase java desde
- 28. la búsqueda de objetos de referencia débiles en las colecciones en Java
- 29. ¿De dónde sacó Java la idea de las interfaces?
- 30. Java Collections.checked *() versus colecciones genéricas
Según http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html, ArrayList no implementa cola. –
Sí, me di cuenta de eso cuando volví para obtener algunos enlaces; obviamente mi memoria es defectuosa – Rob
Sucede. Me impresionaría si tienes toda la biblioteca de Java memorizada. Si hubieras memorizado EE, retrocedería lentamente. –