Introducción
Bienvenido a Java Collections Examples. Esta sección te guiará desde la instalación hasta tu primer escenario BDD ejecutado exitosamente.
¿Qué es este proyecto?
Una colección exhaustiva de ejemplos prácticos que demuestran el uso del API Java Collections siguiendo las mejores prácticas de desarrollo de software.
Objetivos principales
- Aprender haciendo: Cada concepto tiene escenarios BDD ejecutables
- Referencia rápida: Encuentra el ejemplo que necesitas cuando lo necesitas
- Calidad garantizada: Todo el código pasa Checkstyle, SpotBugs y tiene >80% de cobertura
- Documentación viva: Los tests sirven como documentación ejecutable
¿Para quién es este proyecto?
👶 Si eres principiante en Java
- Aprende las colecciones desde cero con ejemplos claros
- Entiende cuándo usar ArrayList vs LinkedList
- Domina HashMap, HashSet y sus diferencias
🧑💻 Si ya conoces Java pero quieres profundizar
- Descubre casos de uso reales que no ves en tutoriales básicos
- Aprende Streams API y programación funcional
- Entiende generics avanzados (wildcards, PECS)
🏗️ Si eres arquitecto o líder técnico
- Revisa anti-patrones comunes y cómo evitarlos
- Analiza decisiones de rendimiento con benchmarks reales
- Usa como material de capacitación para tu equipo
Metodología BDD
Este proyecto usa Behavior Driven Development, una técnica donde:
- Especificamos comportamiento en lenguaje natural
- Automatizamos esas especificaciones como tests
- Implementamos el código necesario
- Refactorizamos manteniendo los tests verdes
Ejemplo completo
# 1. Especificación (archivo .feature)
Escenario: Buscar elemento en ArrayList
Dado un ArrayList con elementos "A, B, C, D"
Cuando busco el índice del elemento "C"
Entonces el índice encontrado es 2
// 2. Step Definition
@Cuando("busco el índice del elemento {string}")
public void buscoElIndiceDelElemento(final String element) {
foundIndex = arrayList.indexOf(element);
}
@Entonces("el índice encontrado es {int}")
public void elIndiceEncontradoEs(final int expected) {
assertThat(foundIndex).isEqualTo(expected);
}
Estructura de navegación
La documentación está organizada en secciones que se complementan:
- Empezar - Setup y primeros pasos
- Colecciones - Referencia de cada tipo
- Casos de Uso - Soluciones prácticas
- Avanzado - Streams, Generics, Concurrencia
- Anti-Patrones - Errores a evitar
- Rendimiento - Optimización y complejidad