apuntes:colecciones
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
apuntes:colecciones [2023/06/04 18:48] – [La clase LinkedList] Santiago Faci | apuntes:colecciones [2023/06/04 21:03] (current) – [Ejercicios] Santiago Faci | ||
---|---|---|---|
Line 42: | Line 42: | ||
{{ comparison.jpg }} | {{ comparison.jpg }} | ||
< | < | ||
+ | |||
+ | ===== Interface Collection ===== | ||
+ | |||
+ | Es la interface padre de todas las colecciones Java | ||
+ | |||
+ | Define una serie de método que cualquier colección tiene que implementar: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * ''< | ||
===== Listas ===== | ===== Listas ===== | ||
Line 49: | Line 66: | ||
< | < | ||
- | ==== La clase ArrayList ==== | + | ==== List ==== |
+ | |||
+ | Es la interface padre de todas las colecciones de tipo Lista: | ||
+ | |||
+ | * Define una serie de método que cualquier colección tiene que implementar | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== ArrayList ==== | ||
La clase '' | La clase '' | ||
Line 198: | Line 224: | ||
==== Stack ==== | ==== Stack ==== | ||
+ | |||
+ | Las Pilas son colecciones de datos donde éstos se colocan // | ||
* Implementa la interface '' | * Implementa la interface '' | ||
* Permite manejar una lista como si se tratara de una estructura //LIFO// (Last In First Out), también conocidas como pilas. | * Permite manejar una lista como si se tratara de una estructura //LIFO// (Last In First Out), también conocidas como pilas. | ||
* Define métodos ('' | * Define métodos ('' | ||
+ | |||
+ | === Añadir un elemento === | ||
+ | |||
+ | <code java> | ||
+ | Stack< | ||
+ | Libro libro = new Libro(. . .); | ||
+ | |||
+ | pilaLibros.push(libro); | ||
+ | </ | ||
+ | |||
+ | === Retirar un elemento de la pila === | ||
+ | |||
+ | <code java> | ||
+ | Libro libro = pilaLibros.pop(); | ||
+ | </ | ||
+ | |||
+ | === Obtener, sin retirar, el elemento de lo alto de la pila === | ||
+ | |||
+ | <code java> | ||
+ | Libro libro = pilaLibros.peek(); | ||
+ | </ | ||
+ | |||
+ | === Obtener la posición de un elemento (posicion >= 1) === | ||
+ | |||
+ | <code java> | ||
+ | int posicion = pilaLibros.search(libro); | ||
+ | </ | ||
+ | |||
+ | === Comprobar el tamaño de la pila === | ||
+ | |||
+ | <code java> | ||
+ | int tamano = pilaLibros.size(); | ||
+ | </ | ||
+ | |||
===== Sets ===== | ===== Sets ===== | ||
Line 208: | Line 270: | ||
< | < | ||
+ | ==== Set ==== | ||
+ | * Por definición no acepta elementos duplicados | ||
+ | * No define métodos nuevos, solamente implementa '' | ||
- | ===== 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 '' | ||
+ | * 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, | ||
+ | * La clave asociada a cada elemento permite recuperarlo | ||
+ | * No se permiten claves duplicadas (se sobrescribe el valor si la clave se vuelve a registrar) | ||
+ | |||
+ | < | ||
+ | {{ map.png }} | ||
+ | < | ||
+ | |||
+ | ==== Interface Map ==== | ||
+ | |||
+ | * Define una serie de método que cualquier colección tiene que implementar | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== 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. | ||
+ | |||
+ | < | ||
+ | {{ map.png }} | ||
+ | < | ||
+ | |||
+ | ==== Interfaces Queue/Deque ==== | ||
+ | |||
+ | Define una serie de método que cualquier cola tiene que implementar | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Además, la interfaz '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== ArrayDeque ==== | ||
+ | |||
+ | Representa una cola | ||
+ | |||
+ | ==== PriorityQueue ==== | ||
+ | |||
+ | Representa una cola donde con los elementos ordenador de forma natural o según el '' | ||
===== La clase HashMap ===== | ===== La clase HashMap ===== | ||
Line 259: | Line 409: | ||
<code java> | <code java> | ||
Set< | Set< | ||
- | < | + | </code> |
=== Obtener el número de elementos del HashMap === | === Obtener el número de elementos del HashMap === | ||
Line 267: | Line 417: | ||
</ | </ | ||
- | ===== Las Pilas ===== | ||
- | |||
- | Las Pilas son colecciones de datos donde éstos se colocan // | ||
- | |||
- | === Añadir un elemento === | ||
- | |||
- | <code java> | ||
- | Stack< | ||
- | Libro libro = new Libro(. . .); | ||
- | |||
- | pilaLibros.push(libro); | ||
- | </ | ||
- | |||
- | === Retirar un elemento de la pila === | ||
- | |||
- | <code java> | ||
- | Libro libro = pilaLibros.pop(); | ||
- | </ | ||
- | |||
- | === Obtener, sin retirar, el elemento de lo alto de la pila === | ||
- | |||
- | <code java> | ||
- | Libro libro = pilaLibros.peek(); | ||
- | </ | ||
- | |||
- | === Obtener la posición de un elemento (posicion >= 1) === | ||
- | |||
- | \begin{lstlisting}[language=java] | ||
- | int posicion = pilaLibros.search(libro); | ||
- | \end{lstlisting} | ||
- | |||
- | === Comprobar el tamaño de la pila === | ||
- | |||
- | <code java> | ||
- | int tamano = pilaLibros.size(); | ||
- | </ | ||
===== Las Colas ===== | ===== Las Colas ===== | ||
Line 310: | Line 424: | ||
En Java, la clase '' | En Java, la clase '' | ||
- | ---- | + | ====== 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> | (c) 2019-{{date> |
apuntes/colecciones.1685904487.txt.gz · Last modified: 2023/06/04 18:48 by Santiago Faci