Programación

1º DAM/DAW - Curso 2024-2025

User Tools

Site Tools


apuntes:colecciones

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
apuntes:colecciones [2023/06/04 18:53] – [Stack] Santiago Faciapuntes:colecciones [2023/06/04 21:03] (current) – [Ejercicios] Santiago Faci
Line 270: Line 270:
 <caption>Colecciones en Java</caption></figure> <caption>Colecciones en Java</caption></figure>
  
 +==== Set ====
  
 +  * Por definición no acepta elementos duplicados
 +  * No define métodos nuevos, solamente implementa ''Collection'' e impide que existan elementos duplicados
  
-===== Queues y Maps =====+==== HashSet ====
  
 +  * Rendimiento constante para las operaciones más habituales
 +  * No garantiza el orden de los elementos de la colección
 +
 +==== LinkedHashSet ====
 +
 +Mantiene una lista doblemente enlazada por lo que puede obtenerse un iterador con el orden en que los elementos fueron añadidos a la colección
 +
 +==== EnumSet ====
 +
 +Es un Set especializado para enumeraciones
 +• El rendimiento es ligeramente inferior al de HashSet
 +
 +==== TreeSet ====
 +
 +  * Garantiza el orden de los elementos
 +  * Sus elementos se mantienen siempre ordenados de forma natural o por un ''Comparator'' que se proporcione en su constructor
 +  * Su rendimiento es el menor de todos los Sets
 +
 +===== Maps =====
 +
 +Es una colección de elementos que se encuentran mapeados por una clave (parejas clave-valor, key-value, K, V):
 +  * La clave asociada a cada elemento permite recuperarlo
 +  * No se permiten claves duplicadas (se sobrescribe el valor si la clave se vuelve a registrar)
 +
 +<figure>
 +{{ map.png }}
 +<caption>Colecciones Map</caption></figure>
 +
 +==== Interface Map ====
 +
 +  * Define una serie de método que cualquier colección tiene que implementar
 +    * ''void clear()''
 +    * ''boolean containsKey()''
 +    * ''boolean containsValue()''
 +    * ''boolean isEmpty()''
 +    * ''Set<K> keySet()''
 +    * ''V put(K, V)''
 +    * ''V remove(K)''
 +    * ''V replace(K, V)''
 +    * ''int size()''
 +    * ''Collection<V> values()''
 +
 +==== HashMap ====
 +
 +Es un mapa que proporciona rendimiento constante para las operaciones put() y get()
 +
 +==== TreeMap ====
 +
 +Es un mapa ordenado por el orden natural o Comparator que se indique en el constructor
 +
 +==== LinkedHashMap ====
 +
 +  * Mantiene una lista doblemente enlazada
 +  * Es posible obtener un iterador con el orden de inserción de las claves
 +
 +===== Queues =====
 +
 +Define estructuras que pueden ser gestionadas como //FIFO// (First In First Out), lo que se conoce como colas.
 +
 +<figure>
 +{{ map.png }}
 +<caption>Colecciones Map</caption></figure>
 +
 +==== Interfaces Queue/Deque ====
 +
 +Define una serie de método que cualquier cola tiene que implementar
 +  * ''boolean add(e)''
 +  * ''E peek()''
 +  * ''E poll()''
 +
 +Además, la interfaz ''Deque'', que extiende a ''Queue'', y añade elementos para añadir y obtener elementos del inicio y el final:
 +  * ''void addFirst(e)''
 +  * ''void addLast(e)''
 +  * ''E getFirst()''
 +  * ''E getLast()''
 +  * ''E removeFirst()''
 +  * ''E removeLast()''
 +
 +==== ArrayDeque ====
 +
 +Representa una cola
 +
 +==== PriorityQueue ====
 +
 +Representa una cola donde con los elementos ordenador de forma natural o según el ''Comparator'' que se le pasa a su constructor
  
 ===== La clase HashMap ===== ===== La clase HashMap =====
Line 321: Line 409:
 <code java> <code java>
 Set<String> losTitulos = libros.keySet(); Set<String> losTitulos = libros.keySet();
-<code java>+</code>
  
 === Obtener el número de elementos del HashMap === === Obtener el número de elementos del HashMap ===
Line 336: Line 424:
 En Java, la clase ''LinkedList'' implementa el interfaz ''Queue'' y proporciona una cola FIFO a través de los métodos ''add(Object)'' y ''poll()'' para retirar el primer elemento. En Java, la clase ''LinkedList'' implementa el interfaz ''Queue'' y proporciona una cola FIFO a través de los métodos ''add(Object)'' y ''poll()'' para retirar el primer elemento.
  
-----+====== Ejercicios ====== 
 + 
 +{{ ejercicio.png}}
  
-====== Ejemplos ======+  - Elige el tipo de colección más adecuado para cada caso: 
 +    - Se quiere almacenar un listado de productos de una tienda online al recuperarlos de una base de datos 
 +    - Ahora tenemos que tener en cuenta que el usuario puede modificar los criterios de ordenación del listado anterior 
 +    - Un usuario va añadiendo productos a un carrito de la compra que más adelante tendrá que validar 
 +    - Un usuario añade varias direcciones de entrega asociadas a su perfil 
 +    - Recuperamos de la base de datos la información del perfil de un usuario (con sus múltiples direcciones de entrega)
  
 ---- ----
  
 (c) 2019-{{date>%Y}} Santiago Faci (c) 2019-{{date>%Y}} Santiago Faci
apuntes/colecciones.1685904787.txt.gz · Last modified: 2023/06/04 18:53 by Santiago Faci