Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Collections

25/38

Lectura

Otras interfaces que son muy importantes en Java son los llamados Collections

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 101

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

No se ustedes, pero para mi este tema ameritaba Clases en video.

El objetivo de las estructuras de datos es el de facilitar la organización de los datos para una manipulación eficiente de los mismos con el mínimo de recursos (tiempo de proceso y espacio de memoria) . Tenemos las siguientes estructuras: Listas, pilas, colas, arboles, etc., la cual deberemos de seleccionar de acuerdo al tipo de problema que queremos resolver.

Deque es una cola de doble extremo. Una cola de doble extremo es una colección lineal de elementos que admite la inserción y eliminación de elementos en ambos puntos finales. La interfaz Deque es un tipo de datos abstractos más rico que una pila (Stack) y una cola (Queue) porque implementa ambas (pilas y colas) al mismo tiempo. La interfaz Deque define métodos para acceder a los elementos en ambos extremos de la instancia de Deque. Se proporcionan métodos para insertar, eliminar y examinar los elementos. Clases predefinidas como ArrayDeque y LinkedList implementan la interfaz Deque

Un deque nos permite tener el comportamiento LIFO y FIFO en una misma estructura.
Este nos permite:

  • Añadir elementos al inicio o al final

  • Eliminar elementos del inicio o final

Esto me recordó a mi clase de estructura de datos en la U… y tuve flashbacks vietnamitas :,v

De mis favoritas es MAP, tiene una gran utilidad para guardar los datos con indices. Algo asi como una tabla en memoria.

Collections

Collection en Java es un framewok que provee una arquitectura para almacenar y manipular un grupo de objetos. Los Java Collections pueden realizar todas las operaciones que se realizan en los datos, como búsquedas, ordenación, inserción, manipulación y eliminación.

Java Collection significa una sola unidad de objetos. Provee de:

Interfaces

  • Set
  • List
  • Queue
  • Deque

Classes

  • ArrayList
  • Vector
  • LinkedList
  • PriorityQueue
  • HashSet
  • LinkedHashSet
  • TreeSet

Siven para trabajar con colecciones de datos, especificamente y solamente con objetos, para ello existen las clases Wrapper que permiten convertir datos primitivos a objetos.

Los collections se diferencian de los arrays en que su tamaño no es fijo y por el contrario es dinámico.

Jerarquía del Collection Framework

List

Es una interfaz para un tipo de estructura de datos como lista, en la cual se puede guardar la colección ordenada de objetos. Puede tener valores duplicados.

Implementada por las clases:

  • ArrayList
  • LinkedList
  • Vector
  • Stack

ArrayList

Utiliza un arreglo dinámico para guardar los elementos duplicados de diferentes tipos de datos. Mantiene el orden de inserción y es no-sincronizado. Los elementos guardados en un ArrayList pueden ser accedidos de forma aleatoria.

LinkedList

Internamente utiliza una lista doblemente ligada para guardar los elementos. Puede tener valores duplicados. Mantiene el orden de inserción y es no-sincronizado. La manipulación es rápida debido a que el cambio no es requerido.

Vector

Utiliza un array dinámico para guardar los elementos. Es similar a ArrayList, sin embargo el Vector es sincronizado y contiene muchos métodos que no son parte de Collection framework.

Stack

Es la subclase de Vector. Sus elementos al ser insertados usan la estructura Last-In-First-Out, es decir Pila. El Stack contiene todos los métodos de Vector y sus propios métodos como push(), y peek().

Queue

Es una interfaz que mantiene el orden de First-In-First-Out. Puede ser definida como una lista ordenada que es usada para mantener los elementos que están por ser procesados. Las clases o interfaces que implementan esta interfaz son:

  • PriorityQueue
  • Deque (interfaz)
    • ArrayDeque

PriorityQueue

Mantiene los objetos a punto de ser procesados por sus prioridades. No permite guardar valores nulos. Cada que se saca un elemento será el menor. También los elementos pueden ser ordenados usando un Comparator.

Deque (interface)

Es una interfaz que extiende la interfaz Queue. Deque permite añadir y eliminar elementos por ambos lados de la lista. Deque significa double-ended queue lo cual permite realizar operaciones en ambos lados.

ArrayDeque

Es una clase que implementa la interfaz Deque. A diferencia de Queue esta clase permite agregar/eliminar elementos por ambos lados.

Esta clase es más rápida que ArrayList y Stack y no tiene restricciones de capacidad.

Set

Es una interfaz que representa el conjunto de elementos no ordenados y no duplicados. Unicamente se puede guardar un sólo valor null. Es implementada por:

  • HashSet
  • LinkedHashSet
  • SortedSet
  • TreeSet

HashSet

Representa la colección que usa una Hash Table para almacenar. El Hashing es usado para guardar los elementos en el HashSet. Contiene sólo elementos únicos, no permite duplicados.

LinkedHashSet

Representa la implementación de lista ligada de Set. Extiende la clase HashSet. Sólo contiene elementos únicos. Mantiene el orden de inserción y permite elementos null.

SortedSet (interface)

Es una interfaz como Set pero que automáticamente ordena los elementos en orden ascendente. También cuenta con métodos adicionales que inhiben el ordenamiento natural de los elementos.

TreeSet

Utiliza un tree para el almacenamiento, sólo contiene elementos únicos. El tiempo de acceso y recuperación de un elemento es rápido. Los elementos son guardados en orden ascendente.

Map

Contiene elementos clave-valor. Un Map no permite claves repetidas pero valores duplicados sí. Un Map es útil si tienes que buscar, actualizar o eliminar elementos haciendo uso de una clave.

Un Map no puede ser recorrido, para hacerlo es necesario convertirlo a un Set, usando keySet() o entrySet().

Interfaces

  • Map
  • SortedMap

Clases

  • HashMap
  • LinkedHashMap
  • TreeMAp

HashMap

No mantiene el orden de inserción. Permite clave y valores null.

LinkedHashMap

Mantiene el orden de inserción. Permite clave y valores null.

TreeMap

No permite clave o valores null. Ordena los elementos de forma ascendente.

Fuente

https://www.javatpoint.com/collections-in-java

https://www.geeksforgeeks.org/collections-in-java-2/

Este tema deberia ser mas explicado a fondo

Es bastante amplia la explicación, me metí en la documentación de Oracle y hay mucha información al respecto, pero podría decirse que una interfaz collection set o list se maneja como una lista de tuplas, ya que pueden ser o no organizadas, pero siempre linealmente, y una interfaz map se maneja como un diccionario ya que esta estructurada bajo el mismo formato key:value.

Un deque (usualmente pronunciado como deck) es una interfaz en Java que permite manejar datos en una estructura de datos doblemente ligada (también conocida como una cola de doble terminación). Esto último es una colección lineal de elementos en la que se pueden insertar y eliminar elementos al principio y al final de la colección. La interfaz deque proporciona métodos para acceder a ambos lados de la instancia de deque y realizar operaciones como insertar, borrar y recuperar elementos.

Python soluciona todo esto de manera super facil usando solo {} () [], de igual manera, es bueno que en java a pesar de ser mas complejo tambien tenga esas posibilidades 😄

No es muy claro como funcionan las colleciones espero se explique más adelante como ya que con ejemplos prácticos se entendió muy bien polimorfismos, herencia e interfases

Deque es una interface que ayuda a manejar pilas o colas con su naturaleza FIFO (first in, first output) o LIFO (last in, first out)
Tal vez, podría darse uso para almacenar mensajes, peticiones, o sistema de colas (como en algunas entidades bancarias).

No me quedó claro estos nuevos conceptos. No encuentro el uso práctico.
HashSet es lo mismo que conjuntos, Map es igual a diccionarios, ArrayList es igual a Listas dinámicas; pero sus compañeros como TreeMap, TreeSet,LinkendList no entiendo el concepto y no encuentro el uso práctico.

Para este tema si es importante la clase, sin embargo busque esto. espero que les sirva: https://www.youtube.com/watch?v=bTu-fz1JmWQ

Deck o Deque, es una lista tipo cola de doble extremo, es decir permite agregar o retirar objetos por ambos lados: inicio de la cola o final de la cola.

(permite ingresar y retirar elementos) inicio cola - [ ] - [ ] - [ ] - fin cola (permite ingresar y retirar elementos)

La interfaz de deck permite agregar elementos , eliminar elementos y recuperar elementos (este ultimo solo recupera el valor mas no elimina el elemento de la lista). para cada uno la interfaz es especifica por que en los metodos se indica si quieres realizar la operacion por el inicio o el final de la lista.

Realmente decepcionante qque un teme tan complejo y tan relevante como Collections, lo manejen de esta manera. Esto debio ser visto a traves de videos con la instructora!

Me confunde un poco leer tantos Map, LinkedHashMap y demás, pero creo que voy comprendiendo poco a poco

Según entendí es una forma de manipular los datos mediante dos colas, donde se insertan los nodos en cualquiera de los dos extremos lo caul la hace mas dinamica

Los collections son totalmente nuevos para mí, a la primara cuesta entenderlos.

Una interfaz Deque en Java es una estructura de datos que permite agregar y eliminar elementos tanto al principio como al final de la cola. Funciona siguiendo el principio “First-In-First-Out” (FIFO), es decir, el primer elemento que entra es el primer elemento que sale.

The Deque Interface
- Es una colección linear que nos ayuda a insertar y actualizar datos en los extremos de la pila.
- Define métodos para la inserción y actualización de datos en los extremos de la colección
- ArrayDeque y LinkedList implementan la interface Deque

Creo que haré un .pdf de todo esto, de forma más visual. ¿Alguien de acuerdo?

🐱‍💻 Deque es una interfaz que nos permite acceder a los elementos en ambos extremos de la colección. Para este propósito nos proporciona métodos de inserción, eliminación y búsqueda de elementos.

La interfaz Deque funciona como una Pila(Stack) y una Cola(Queue) a la vez. Puedes interactuar en una instancia Deque con sus elementos iniciales y los finales también, puedes insertar, eliminar y recuperar tales elementos.

la interfaz Deque es una cola de dos extremos. es una colección lineal de elementos que funciona para insertar, eliminar y recuperar elementos en ambos extremos. la Deque es mas rica que la Pila (Stack) y una cola (Queue) porque implementa colas y pilas al mismo tiempo.

// Imprimimos el Map con un Iterador
Iterator it = map.keySet().iterator();
while(it.hasNext()){
Integer key = it.next();
System.out.println("Clave: " + key + " -> Valor: " + map.get(key));
}
no funciona esto

Esta super la documentación, pero si hubiese sido genial un ejemplo aplicativo 😕

cuando lo lees con la voz de la profesora

Deque es una interfaz que se puede implementar con clases predefinidas como lo son ‘ArrayDeque’ y ‘LinkedList’. Lo bueno es que se trata de una cola con doble final, que significa que se comporta como una cola y una pila al mismo tiempo. Es decir, podemos hacer uso de FIFO y LIFO con la misma colección y de una manera sencilla. También podemos acceder a sus datos para removerlos, agregar nuevos o bien obtenerlos.

La interfaz Deque es una estructura de data abstracto. Funciona como la combinacion de stacks y queues.
Stacks : LIFO - Last In First Out (El ultimo dato que ingreso sera el primero en salir)
Queues : FIFO - First In First Out (El primer dato que ingreso sera el primero en salir)

En un Deque podemos sacar datos del princio de la fila (los primeros en ingresar) y tambien del final de la file (los ultimos en ingresar).

Deque es una interfaz de doble entrada, el cual nos permite insertar o eliminar elemento al inicio o al final de la cola (queue), esto podriía ser util cuando tengamos que aplicar FIFO o LIFO.

buen resumen de los collections 😃

La interface Deque es una colección de elementos que permite insertar, eliminar y recuperar en ambos extremos.

DEQUE (Double ended - queue), nos permite agregar y eliminar al inicio o al final de la pila o cola.
No permite agregar valores nulos (null)

de la lectura entiendo que la interface Deque se usa para tener colecciones de objetos que se pueden comportar(segun quiera el programador) como cola o pila, es decir, que los objetos se agreguen, eliminen o lean al principio o al final de la lista.

El deque(Double Ended QUEue) es una colección lineal que solo permite insertar y retirar elementos de los extremos, proporcionando las funcionalidades de los Stack(pilas) y las Queue(Colas), en otras palabras permite usar LIFO y FIFO.

Estas Caracteristicas nos obligan a que si quisiéramos eliminar o insertar un elemento en el centro del deque tendríamos que eliminar todos los elementos posteriores o todos los elementos anteriores. Y luego reconstruirlo segun nuestra necesidad. La interface provee de métodos como removeLastOccurence y removeFirstOccurence pero dada la forma en la que funciona esta interface, dependiendo de donde este ubicado el elemento a remover necesitar hacer una mayor o menor cantidad de iteraciones sobre la colección

Hola a todos, el tema me resulto un poco dificil de entender ya que es la primera vez que lo veo, me gustaria saber si alguno de ustedes me sugire algun video o clase que lo explique con mas detenimiento. Muchas gracias por su ayuda!

En ciertas ocasiones trabaje con ArrayList para poder traer varios registros de empleados en una base de datos y mostrarlos en una tabla para poder editarlos, eliminarlos o añadir nuevos, sin embargo, no conocía los otros tipos de List que se explican acá. Me gustaría verlos en ejemplos para poder entenderlos mejor.

Deque es una colección linear que combina lo que es la clase Stack y la clase Queue, haciendo así posible la inserción de elementos tanto al inicio como al final de la colección, también puede borrar y agregar elementos. Se menciona que si la capacidad de la instancia del Deque es limitada y NO puede almacenar más elementos estos pueden remplazarse con los metodos offerFirst y offerLast, ya que si se emplean los elementos addFirst y addLast resultaría en una excepción debido a que sobrepasó el limite de la colección.

Deque Interface se pronuncia de la siguiente manera: Deck, es un tipo de lineal de colección que permite agregar, **remover ** y **recuperar ** elementos por ambos extremos. Tanto el inicio como el final. También es conocido como un tipo de estructura de datos más eficaz que la Pila o Cola ; ya que aplica los mismos principios de LIFO y FIFO.


Cada una de las 3 acciones que libera 4 métodos, especificados n la siguiente tabla:

bueno creo que fue uno de los temas donde mas me quede por que hay mucho pero a lot que ver leer y comprender pero dejare aquí lo que mas puede saber de esto primero veamos a collection como la superclase con sus debidos atributos estas tiene dos hijos con sus propias características y que herédala atributos de sus padre Sus dos hijos son set.y list Por el lado de set nos di que tenemos como características principal que no ordena los objetos o datos almacenados en las bodega esta es un atributo que no todas heredan pero en su mayoría si pronto lo descubriremos Como primer hijo tenemos a los \*HASHSET\* se nos dice que estos no ordenan nuestros, no permite elementos duplicados en caso de tener uno lo eliminara y tampoco null es.muy bueno para búsquedas de datos a pesar de no tener los datos o objetos en ordenes pero es debido a que usa una características de hash este permite un acceso rapido a los datos. SortedSet este es uno de los pocos set que tiene flexibilidad y no permite orden los datos por defecto de forma natural y tambien nos deja personalizar este orden con operaciones. TreeSet este tiene un nombre poco particular árbol al español pero tiene mucho que ver por como se almacenan los datos eh aqui se acuerdan de los nodos y como se mueve el internet digamos que.los arboles y sus ramas son tipo de red de cables gracias a esto todo estan conectados y muy facil buscar y eliminar y hasta incluso remplazar datos esta es simplemente una analogía pero estoy segurísimo que comprendiste. Antes que entremos a los list veremos un concepto fundamental conocido como la sincronización se di y se conoce que toda bodega necesita un candando o en nuestro caso estructuras de datos bueno la sincronización se podria decir que son los cadandos pero no todas nuestras estructuras tienen esta características ya que esta tiene atributos como lentitud seguridad y comunicación entre los datos almacenados. Sin mas que decir vamos con la siguiente lista List destacan por su flexibilidad dado a que estas no dejan hacer mas cosas como tener elementos datos o objetos duplicados cuentan con indice que nos ayudara a ingresar a al dato que este alistado en este indice los datos se ordenan veamos sus hijos e hijas. Clase ArrayList esta destaca por ser muy dinámica ya que crece al mismo tiempo y dependiendo de la cantidad de datos que se ingresen no esta sincronizada por lo que se vuelve muy rápida. Clase vector esta cuenta con la característica de sincronización.pero es mucho mas lenta, duplicacion y dinámica. Linkendlist esta es una estructura de datos doblemente ligada pero quiere decir esto prevalecen que se le puede reiniciar el window nos dice su concepto que como es doblemente ligada mientras mas datos ingresen se volverá mas lenta pero a la vez serás mas eficiente para la búsqueda y eliminacion de datos diran esta loco este escritor pero es todo lo contrario dejen les explico cuando tenemos muchos mas datos de entrada la máxima los separa u asi logra buscar el indicado recuerdan el lema divide y vencerás
Java Collections es un framework en el lenguaje de programación Java que proporciona arquitecturas para almacenar y manipular grupos de objetos. Este framework es parte de la biblioteca estándar de Java y ofrece una serie de interfaces, clases y algoritmos para manejar diferentes tipos de colecciones de datos, como listas, conjuntos, mapas y colas. ### Componentes clave de Java Collections: 1. **Interfaces**: Definen las abstracciones que las clases implementan. * **List**: Una colección ordenada que puede contener elementos duplicados. Ejemplo: `ArrayList`, `LinkedList`. * **Set**: Una colección que no permite duplicados. Ejemplo: `HashSet`, `TreeSet`. * **Map**: Una colección de pares clave-valor, donde cada clave es única. Ejemplo: `HashMap`, `TreeMap`. * **Queue**: Una colección que sigue una política de "primero en entrar, primero en salir" (FIFO). Ejemplo: `PriorityQueue`. 2. **Clases**: Implementan las interfaces y proporcionan la funcionalidad concreta. * **ArrayList**: Una lista basada en arrays que puede crecer dinámicamente. * **HashSet**: Un conjunto que utiliza una tabla hash para almacenar elementos sin duplicados. * **HashMap**: Un mapa que utiliza una tabla hash para almacenar pares clave-valor. 3. **Algoritmos**: Métodos estáticos que realizan operaciones útiles sobre colecciones, como ordenar, buscar y manipular datos. Ejemplo: `Collections.sort()`.
La clase LinkedHashMap no hereda directamente de Map, lo hace através de la clase HashMap, es decir, LinkedHashMap es hijo de HashMap quien es hijo de Map.
La interfaz deque podemos imaginarla como la seccion de un tubo con el diametro justo para agregar canicas (en representación de objetos), entonces con este tubo podemos: agregar canicas por cualquiera de los dos extremos, sacar canicas por cualquiera de los dos extremos u observar la canica que esta en el borde de cada extremo. la interfaz deque es una colección que permite realizar cualquiera de esas 6 acciones

En mis palabras la interfaz “Deque” funciona a partir de que en ella se definen métodos con comportamientos que permiten tener el comportamiento LIFO (último-en-entrar-primero en salir) y FIFO (primero-en-entrar-primero-en-salir ) en una misma estructura de datos doblemente ligada; lo cual, hace posible la inserción, remoción y acceso tanto al primer elemento de la instancia Deque como al último.

Deuqe:
Es una colección más completa en relación a Queue o colas, ya que permite insertar o eliminar elementos, al inicio o al final de la instancia.

También permite consultar por ellos, en el caso este vacío, arroja null si se consulta por el primero, y lanza una excepción cuando se consulta por el último.

Aquí encontraras algunos videos de Collections en Java. Enlace a YouTube TodoCode

A deque (double-ended queue) in Java is a linear collection that supports adding and removing elements at both the front and the back of the deque. This makes it a versatile data structure that can be used for a variety of tasks, such as:

  1. Storing a list of elements in a sorted order: A deque can be used to store a list of elements in a sorted order by adding elements to the front of the deque and removing elements from the back of the deque.

  2. Implementing a stack: A stack is a data structure that supports adding and removing elements from the top of the stack. A deque can be used to implement a stack by adding elements to the back of the deque and removing elements from the front of the deque.

  3. Implementing a queue: A queue is a data structure that supports adding and removing elements from the front of the queue. A deque can be used to implement a queue by adding elements to the front of the deque and removing elements from the back of the deque.

La interfaz Deque es una interfaz de colección que extiende la interfaz Queue. La interfaz Deque es una cola que permite agregar y eliminar elementos tanto desde el principio como desde el final de la cola.

La interfaz Deque en Java tiene métodos para agregar y eliminar elementos tanto desde el principio como desde el final de la cola. Los métodos de la interfaz Deque se dividen en tres categorías principales:

Métodos de inserción: permiten agregar elementos a la cola desde el principio o desde el final.

Métodos de eliminación: permiten eliminar elementos de la cola desde el principio o desde el final.

Métodos de inspección: permiten inspeccionar los elementos de la cola sin eliminarlos.

La interfaz Deque es implementada por varias clases en Java, como ArrayDeque, LinkedList, y ConcurrentLinkedDeque. Dependiendo de la clase utilizada para implementar la interfaz Deque, se puede tener diferentes características en términos de rendimiento, concurrencia y capacidad.

La funcion Deque es una herramienta muy útil para crear estructuras de datos de doble cola en aplicaciones Java, y facilita el acceso y manipulación de elementos desde ambos extremos de la cola.

Considero que la clase Deque tiene su mayor fortaleza por la implementacion de las interfaces Queue y Stack lo que le permite una definicion de metodos mas robustas adecuada a cada necesidad

🚀 ¿Qué son las COLLECTIONS en JAVA? POO 🖥️ | LIST, SET, QUEUE, MAP | Explicación FÁCIL 💥#12

https://www.youtube.com/watch?v=mE1vnyn_QgU&ab_channel=TodoCode

Generalmente pronunciado como deck, un deque es una cola de dos extremos. Una cola de dos extremos es una colección lineal de elementos que admite la inserción y eliminación de elementos en ambos puntos finales. La Dequeinterfaz es un tipo de datos abstractos más rico que ambos Stacky Queueporque implementa pilas y colas al mismo tiempo. La Dequeinterfaz define métodos para acceder a los elementos en ambos extremos de la Dequeinstancia. Se proporcionan métodos para insertar, eliminar y examinar los elementos. A las clases predefinidas les gusta ArrayDequee LinkedListimplementan la Dequeinterfaz.

Leyendo en blogs y en la documentación oficial de Oracle hice este resumen de Iterator y de algunos métodos que se ven en el código y no se explican que son. Espero que les sea de ayuda y si ven algo para corregir no duden en hacerlo.

Iterator

Lo primero es tener claro que hay que distinguir el método iterator (en minúsculas) y el tipo definido en el api de Java Iterator (con mayúsculas).

Iterator con mayúsculas es un tipo definido por la Interface Iterator, igual que List es un tipo definido por la interface List. Iterator toma el lugar de Enumeration, pero Iterator agrega una operación de eliminación opcional y tiene nombres de métodos más cortos. Las nuevas implementaciones deben considerar el uso de Iterator en lugar de Enumeración.

Por el contrario, iterator() con minúsculas es un método que tienen las colleciones de tipo List y Map. Esto hay que tenerlo claro desde el principio para no llevar a confusiones.

Un Iterador es un objeto que nos permite  recorrer una lista y presentar por pantalla todos sus elementos . Dispone de tres métodos clave para realizar esta operación hasNext(), next() y remove().

  • .hasNext() : devuelve un valor boolean indicando si el iterador tiene un siguiente elemento. Devuelve true si la iteración tiene más elemento.
  • .next() : devuelve el siguiente elemento del iteradr.
  • .remove() : remueve o elimina el anterior objeto devuelto.

Hay que recordar que una interface es un tipo abstracto, por lo tanto no puede ser instanciado porque carece de constructor. Sin embargo, puede definirse un objeto del tipo definido por la interface si se instancia en una clase que implementa la interface.

Ej: Iterator it = map.keySet().iterator();

Para iterar alguno de estos será necesario utilizar la interface Iterator y para recorrerlo lo haremos un bucle while así como se muestra:

Para HashMap

//Imprimimos el Map con un Iterador 
Iterator it = map.keySet().iterator();

while( it.hasNext() ){
	Integer key = it.next();
	System.out.println("Clave: " + key + " -> Valor: " + map.get(key));
}

  • .keySet() : Devuelve una coleccion Set de las claves contenidas en este map.
  • .iterator(): devuelve un iterador sobre los elementos de esta colección.
  • .get(key) : Devuelve el valor al que se asigna la clave especificada, o null si este map no contiene ninguna asignación para la clave.

Un buen video para entender mejor sobre el tema de collections:

Hierarchy of the Collection Framework

Un Deque es una abreviación de “Double Ended Queue”, lo que significa que es una colección de donde se puede agregar o extraer elementos en la terminación de ambos extremos: al principio y al final.

La interfaz de Deque
Generalmente pronunciado como mazo, un deque es una cola de dos extremos. Una cola de dos extremos es una colección lineal de elementos que admite la inserción y eliminación de elementos en ambos puntos finales. La interfaz Deque es un tipo de datos abstracto más rico que Stack y Queue porque implementa pilas y colas al mismo tiempo. La interfaz de Deque define métodos para acceder a los elementos en ambos extremos de la instancia de Deque. Se proporcionan métodos para insertar, eliminar y examinar los elementos. Clases predefinidas como ArrayDeque y LinkedList implementan la interfaz Deque.

Tenga en cuenta que la interfaz Deque se puede utilizar como pilas de último en entrar, primero en salir y colas de primero en entrar, primero en salir.

llegue a este tema y empece a consultar sobre los collections y llevo dos dias completos por fuera de la plataforma ampliando este tema y creo que aun asi es insuficiente abarcar este tema… este tema es muy grande y amplio, debería tener al menos un par de videos o sesiones adicionales, por lo demas vamos bien con los temas de java

Deque es mas facil de intender imagina que tienes dos salidas y entradas por donde sacar o ingresar datos.

Una mayor explicación y más detallada, sobre la interface Iterator:
Collecciones y Interface Iterator
Lee el documento completo y te ayudará a entender varios concepto que explica en clase. 😁😁

Viniendo de Python y Javascript, ahora puedo ver las enormes ventajas de desarrollar en un lenguaje de programación interpretado moderno, todo esto se simplifica demasiado y la velocidad en el proceso de desarrollo también, pero es interesante entender todo esto.

Este tema es algo complejo para solo lectura, les comparto la clase del curso viejo donde se explica mejor:
https://platzi.com/clases/1222-java-basico-2018/10029-interfaz-list-arraylist-y-vector/

Las colecciones son almacenes dinámicos de objetos.

  • Los colecciones permiten ordenar la información/objetos

  • Las colecciones permiten insertar y eliminar los elementos/objetos.

  • Collection Set:

    Permite almacenar elementos no repetidos y sin ordenar.

  • Collection List:

    Los elementos pueden estar repetidos y están en orden número (índice) [1,2,3,4,5…]

  • Collection Queue (colas):

    Solo se permite acceder a elementos que estén al inicio o al final.

  • Map:

    Permite crear una colección de elementos repetibles, indexados por claves únicas repetibles.

ej:

compact1, compact2, compact3
java.util

Interfaz Deque<E>

Parámetros de tipo:
E - el tipo de elementos que se encuentran en esta colección

Todas las superinterfaces:
Recopilación<E>, Iterable<E>, Queue<E>

Todas las subinterfaces conocidas:
BloqueoDeque<E>

Todas las clases de implementación conocidas:
ArrayDeque, ConcurrentLinkedDeque, LinkedBlockingDeque, LinkedList

Por lo que entendi la interfaz Deque define métodos para acceder a los elementos en ambos extremos de la instancia.
Se proporcionan métodos para insertar, quitar y examinar los elementos.
Y las clases predefinidas como ArrayDeque y LinkedList implementan la interfaz.

Honestamente, Deque, esa definiendo una manera diferente de crear una colecion de forma linear, la diferencia esque esta, tiene doble entrada y puedes remover elements, como su nombre lo indica, en las dos entradas(o dos end points como le quieran llamar),

Defines Metodos para acceder a elementos de las dos entradas, estos metodos son

Insert, Remove y retrieve, casi como cuando pusheamos algo algun arreglo, algo asi, solo que en este pusheamos no nadamas Arraylist, pusheamos Sets.

Yo entendí Deque de la siguiente manera:

Deque es una interfaz que es implementada por listas o arreglos que permiten añadir y retirar elementos tanto del principio como del final. Esta interfaz le proporciona los métodos para insertar, remover y consultar elementos a dichas listas y arreglos.

Basicamente para resumir lo que hace esta interface Deque, es el proceso de inserción, eliminación y recuperación de elementos, a través de 12 métodos, ya sea en forma de pila o cola, e implementa estos mismos al mismo tiempo. (El concepto puede ser mas extenso, pero en resumen puede ser esta, una definición corta)

Deque es una interfaz de doble entrada, el cual nos permite insertar o eliminar elemento al inicio o al final de la cola (queue), esto podriía ser util cuando tengamos que aplicar FIFO o LIFO.

No estoy muy seguro, pero en LinkedHashMap al ordenar al ir insertando no debería hacer las busquedas mas rápidas? (dice que las busquedas son mas lentas en la descripción), ya que al estar ordenado sería mas rápido buscar, lo que sería mas lento serían las inserciones, ya que al insertar cada elemento verificaría en donde debería de ir

Hola comunidad, ¿cual interfaz es mas usada Set, List o Map?

La interfaz Deque (pronunciada deck) es una colección con final de cola en ambos extremos. En esta interfaz se proveen métodos para insertar, examinar y remover elementos.
Con los métodos incluidos podemos insertar elementos al comienzo o al final de la cola.

Seria bueno, algún ejemplo del uso de Deque para reforzar la lectura

A veces por su facilidad de uso, yo uso las LinkedList para almacenar obejtos complejos 😃

Deque interfaz, del que salen las clases ArrayDeque y LinkedList, la principal característica se define como doble inicio o doble final ya que ambos extremos de la colección pueden tener funciones de insertar, remover y consultar, no tendría limite en tamaño de objeto que contenga ni en cantidad de objetos que liste, gracias a esto nunca generaría una excepcion.
también puede verificar si un objeto esta repetido.

La Deque es una estructura que permite inserciones y borrados al principio y al final.

La interfaz Deque la implementa LinkedList, ha sido descrito su funcionamiento anteriormente en los posteos y en el ‘artículo’ de esta clase.

El Deque es una interfaz y colección lineal que contiene datos y que se caracteriza por realizar operaciones como insertar, eliminar o encontrar datos tanto desde el comienzo o final de la colección.

Los “Deque” son una estructura de datos conocida como bicolas, en las que se pueden acceder, agregar, o eliminar elementos por ambos extremos de la cola, es decir, al prinicipio o al final.
Los metodos que podemos utilizar para agregar elementos son:
* addFirst (agrega un elemento al principio)
* addLast (agrega un elemento al final)
Si la cola tiene una capacidad restringida, entonces usaremos los metodos offerFirst y offerLast.
Los metodos que podemos utilizar para quitar elementos son:
* removeFirst (quita un elemento del principio)
* removeLast (quita un elemento del final)
Si la cola se encuentra vacia estos dos metodos arrojaran una excepcion; tambien podemos usar pollFirst y pollLast,
que en caso de que la cola se encuentre vacia retornaran null.
Los metodos que podemos utilizar para acceder a elementos son:
* getFirst (retorna el primer elemento)
* getLast (retorna el ultimo elemento)
Al igual que al remover elementos,en caso de que la cola se enecuentre vacia estos metodos arrojaran una
excepcion; tambien podemos usar peekFirst y peekLast, que en caso de que la cola se encuentre vacia retornaran
null.
Disculpen la falta de tildes, estoy usando un teclado en ingles.
Muy buen curso, saludos!

Pienso que la interfaz Deque es de mucha utilidad para controlar ciertos eventos de inserccion, remove y Retrieve de inicio a fin. No lo he usado pero desde ahora lo haré.

Excelente explicación de las interfaces Collections y el Map

El Deque (también pronunciado como “Deck”) es una colección linear de objetos que puede ser consultada tanto del inicio como del final. Para esto tiene métodos definidos para inserción, eliminación y consulta de primero y final de la lista.

También tiene métodos espeficicos que buscan un elemento de la lista en específico y estos retornan true si se encuentra o false si no.

Muy buena explicacion, al comienzo vi mucho texto pero cuando empece a leer, me di cuenta lque es re importante

Deque implementa tanto de Stack como de Queue dando como resultado el poder utilizar metodos de ambos

La interfaz Deque es un tipo de dato abstracto mejor que stacks y queues pq implementan tanto pilas como colas al mismo tiempo, en esta interfaz se definen métodos para acceder a los elementos: insertar, eliminar y recuperar, se puede utilizar tanto como pila o como cola.

Eso no me lo sabia

Genial

Super a profundizar en todos estos nuevos conceptos.

Deque es una colección lineal de elementos que soporta el insertar y remover datos en ambos puntos, algo asi como la LinkedList que vimos mas arriba.

Deque: Es una interface, es una cola de dos extremos, es decir, una colección lineal de elementos que permite insertar y elimiinar desde los puntos finales. Implementa colas y pilas al mismo tiempo; y las clases ArrayDeque y LikenList implementar la Deque interface.

La Deque interfaz define métodos para acceder a los elementos en ambos extremos de la Deque instancia. Esto es importante porque significa que pone el práctica los conceptos de FIFO(first in, first out) y LIFO (last in, first out), lo que significa que es más eficiente porque implementa las estructuras de datos pilas y colas al mismo tiempo.

Interfase Deque es una colección lineal de elementos cuyo funcionamiento permite de manera eficiente la inserción y remoción elementos del principio y final de la colección, esto favorece el uso eficiente de pilas y colas.

**ArrayDeque: ** Una cola de dos extremos que se implementa como una array circular.










La Interfaz Deque, es una colección lineal de elementos, que permite eliminar y insertar tanto al inicio como al final, implementa LIFO y FIFO al mismo tiempo. Proporciona métodos para insertar, recuperar y eliminar elementos.
Insertar: al comienzo(addFirst(), offerFirst()) - al final(addLast(), offerLast()).
Recuperar: al comienzo(getFirst(),peekFirst())- al final(getLast(), peekLast()).
Eliminar: al comienzo(removeFirst(), poolFirst()) - al final(removeLast(), poolLast()).

Deque
Es una interfaz una colección lineal de elementos que admite insertar y eliminar elementos tanto por el inicio como por el final de la colección. Esta interfaz implementa al mismo tiempo Stack (Pila) y Queue (Cola) y tiene métodos para acceder a los elementos en ambos extremos de la colección. Las clases predefinidas ArrayDeque y LinkedList implementan la interfaz Deque.

Esta interfaz cuenta con los siguiente métodos:

es fácil confundirse con esto, el deque entendí que se puede usar el FIFO o el LIFO