<aside>
❓ ¿Cuál usar?
- ¿Se repetirán los datos?
- ¿Usará operaciones de agregar/borrar?
- ¿Operaciones solo lectura?
</aside>
1. ¿Para qué sirven? 🤔
- Almacén dinámico de objetos
- Ventajas respecto a Arrays
[]:
- Puede cambiar de tamaño 🙌
- Se pueden reordenar 🗄️
- Insertar 📥 y eliminar 📤 objetos
- Solo almacena objetos, no datos primitivos 🦖
1.1 Tipos de Collection
<aside>
📉 Entre más funciones permita un Collection, es menos eficiente
</aside>
Set No repetidos y sin ordenar (Ej: Titulares de una cuenta corriente)
List Repetidos, indexados con valores numéricos y acceso aleatorio
Queue Cola, no acceso aleatorio, solo acceder al principio o al final
Map Repetidos, indexados por clave única arbitraria

Collections in Java - javatpoint

Using Maps to Store Key Value Pairs - Dev.java
| ✅ Ventajas |
❗Inconvenientes |
| Acceso aleatorio |
Bajo rendimiento en operaciones concretas, que otras interfaces lo resuelven mejor |
Están ordenadas (collection.sort()) |
|
| 📥 Añadir / 📤 eliminar sin restricción |
|
LisIterator modifica cualquier dirección |
|
| Sintaxis similar a Arrays |
|

List Interface in Java with Examples - GeeksforGeeks
-
ArrayList
- Muy rápida accediendo a elementos 🚀
- Se adapta a muchos escenarios
-
LinkedList
- Listas enlazadas
- Gran eficiencia agregando y eliminando elementos 📥 🚀📤
-
CopyOnWriteArrayList
- Para programas concurrentes
- Eficiente en lectura 🚀, deficiente en escritura 🐌
-
Vector
- Únicamente en operaciones de concurrencia
- Colección obsoleta 😢
| ✅ Ventajas |
❗Inconvenientes |
| No permiten elementos duplicados |
No acceso aleatorio |
Método add que no agrega duplicados |
Poco eficiente al ordenar (no siempre se puede) |

Set in Java - Javatpoint
-
HashSet
- Rápido 🚀✅
- No duplicados 👥❌
- No ordenación ❌
- No acceso aleatorio ❌
-
LinkedHashSet
- Ordenación por entrada 📥
- Eficiente al acceder 📤🚀
- No eficiente al agregar 📥❌
-
TreeSet
- Ordenado 🗄️
- Poco eficiente 🐌
-
EnumSet
- La mejor para tipos
enum ✅
-
CopyOnWriteArraySet
- Específico para concurrencia
- Eficiente lectura 🔍🚀
- Poco eficiente escritura ✏️🐌
- Poco eficiente eliminar 🗑️🐌
-
ConcurrentSkipListSet
- Especifíco para concurrencia
- Admite ordenación
- Entre más elementos baja eficiencia 🐌