Contenido verificado asociado a este RA
Arrays en Java: declaración, recorrido y manipulación de datos
Esta unidad trabaja la escritura de programas que utilizan arrays: cómo declararlos e inicializarlos, cómo recorrerlos y modificarlos, cómo emplear arrays multidimensionales y de objetos, y cómo aplicar algoritmos básicos de búsqueda y cálculo sobre ellos. Se incluyen ejemplos ejecutables, un caso profesional y los errores más frecuentes al indexar arrays.
Iteradores y Recorrido de Colecciones Avanzado
Esta unidad profundiza en el recorrido de colecciones mediante iteradores, una herramienta fundamental para acceder a los elementos de forma segura y eficiente, independientemente de la implementación subyacente de la colección. Se comparan diferentes estrategias de recorrido y sus implicaciones.
Programación Genérica: Clases y Métodos
Esta unidad introduce la programación genérica, una técnica fundamental para escribir código flexible y reutilizable que opera con diferentes tipos de datos sin sacrificar la seguridad de tipos. Se explica cómo crear y utilizar clases y métodos genéricos.
Expresiones Regulares para Búsqueda de Patrones
Esta unidad aborda el uso de expresiones regulares, una herramienta poderosa para la búsqueda, validación y manipulación de patrones en cadenas de texto. Se explican los fundamentos de su sintaxis y su aplicación práctica en programas.
Manipulación de Documentos XML
Esta unidad cubre la identificación de las clases y técnicas para el tratamiento de documentos XML, un formato estándar para el intercambio de datos. Se explican los métodos para leer, escribir y modificar la estructura y el contenido de archivos XML en programas.
Conceptos clave
ArrayÍndiceMemoria contiguaArray multidimensionalPaso de arrays por referenciaArray de objetosArrayIndexOutOfBoundsExceptionIteradorIteratorFor-eachSetMapHashSetHashMapConcurrentModificationExceptionProgramación genéricaClases genéricasMétodos genéricos
Errores que conviene evitar
- Acceso fuera de rango en un array: Causa: usar un índice igual a array.length o negativo. Corrección: recorrer siempre con i < array.length y validar índices calculados antes de usarlos, ya que provoca ArrayIndexOutOfBoundsException.
- Array de objetos sin inicializar cada posición: Causa: asumir que new Alumno[3] crea objetos Alumno reales. Corrección: cada posición queda a null hasta que se asigna explícitamente un objeto; acceder antes lanza NullPointerException.
- Modificar un array dentro de un for-each: Causa: la variable del bucle es una copia del valor, no una referencia a la posición. Corrección: usar un bucle indexado (for con i) y asignar sobre array[i] cuando se necesite modificar elementos.
- Modificar colección durante iteración con for-each: Causa: El bucle for-each no está diseñado para modificaciones concurrentes. Corrección: Usar `Iterator.remove()` o modificar la colección fuera del bucle.
- Selección incorrecta de colección: Causa: Desconocimiento de las características de rendimiento y propósito de `Set` y `Map`. Corrección: Evaluar si se necesitan elementos únicos (`Set`) o pares clave-valor (`Map`) antes de elegir una `List`.
- Uso de tipos primitivos en genéricos: Causa: Los genéricos solo aceptan tipos de referencia. Corrección: Usar las clases envoltorio correspondientes (ej. `Integer` en lugar de `int`).
- Asumir covarianza en tipos genéricos: Causa: Creer que `List<Subtipo>` es un `List<SuperTipo>`. Corrección: Utilizar comodines (`? extends T`, `? super T`) para expresar relaciones de subtipo en parámetros genéricos.
- No escapar metacaracteres: Causa: Confundir un carácter literal con un metacaracter de regex. Corrección: Usar `\` para escapar caracteres como `.`, `*`, `+`, `?`, `[`, `]`, `(`, `)`, `{`, `}`, `|`, `^`, `$`, `\`.