En este capítulo, exploraremos el uso de expresiones regulares en Java y las colecciones avanzadas como listas, conjuntos y mapas. Estos conceptos son fundamentales para el procesamiento de texto y la administración de datos en aplicaciones Java.
8.1. Expresiones Regulares en Java
Expresiones regulares (regex) son patrones utilizados para buscar y manipular cadenas de texto. Java proporciona la clase java.util.regex
para trabajar con expresiones regulares. Algunos conceptos clave incluyen:
- Patrón: Una expresión regular que describe un conjunto de cadenas.
- Matcher: Un objeto que realiza búsquedas en una cadena utilizando un patrón.
- Grupos: Partes de una cadena que coinciden con partes específicas del patrón.
Ejemplo 8.1.1: Uso de Expresiones Regulares
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExpresionesRegulares {
public static void main(String[] args) {
String texto = "La dirección de correo electrónico es ejemplo@email.com";
String patron = "\\b[\\w.%-]+@[-.\\w]+\\.[A-Za-z]{2,4}\\b";
Pattern pattern = Pattern.compile(patron);
Matcher matcher = pattern.matcher(texto);
while (matcher.find()) {
System.out.println("Correo encontrado: " + matcher.group());
}
}
}
8.2. Colecciones Avanzadas en Java
Las colecciones avanzadas son estructuras de datos utilizadas para almacenar y administrar datos. Algunos tipos comunes incluyen:
- Listas: Almacenan elementos en un orden específico y permiten duplicados.
- Conjuntos: Almacenan elementos únicos sin un orden específico.
- Mapas: Almacenan pares clave-valor, donde cada clave se asigna a un valor único.
Ejemplo 8.2.1: Uso de Listas, Conjuntos y Mapas
import java.util.ArrayList;
import java.util.HashSet;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.Map;
public class ColeccionesAvanzadas {
public static void main(String[] args) {
// Listas
List<String> listaNombres = new ArrayList<>();
listaNombres.add("Juan");
listaNombres.add("María");
listaNombres.add("Pedro");
// Conjuntos
Set<String> conjuntoColores = new HashSet<>();
conjuntoColores.add("Rojo");
conjuntoColores.add("Verde");
conjuntoColores.add("Azul");
// Mapas
Map<String, Integer> mapaEdades = new HashMap<>();
mapaEdades.put("Juan", 30);
mapaEdades.put("María", 25);
mapaEdades.put("Pedro", 35);
}
}
8.3. Ejercicios de Práctica
Ejercicio 8.3.1: Validación de Correos Electrónicos
Crea una aplicación que valide direcciones de correo electrónico en una lista de texto utilizando expresiones regulares. Las direcciones de correo electrónico válidas deben ser almacenadas en una lista.
Ejercicio 8.3.2: Gestión de Inventario
Desarrolla una aplicación que administre un inventario de productos. Utiliza una estructura de datos como un mapa para mantener un registro de los productos y sus cantidades en stock.
Resumen del Capítulo
En este capítulo, hemos explorado el uso de expresiones regulares en Java para buscar y manipular cadenas de texto. También hemos cubierto las colecciones avanzadas, como listas, conjuntos y mapas, que son fundamentales para administrar datos en aplicaciones Java. Los ejercicios proporcionados permiten a los lectores practicar y profundizar en su comprensión de estos conceptos clave de Java.
Respuesta ejercicio 8.3.1:
Para resolver el ejercicio de crear una aplicación que valide direcciones de correo electrónico en una lista de texto utilizando expresiones regulares y almacenar las direcciones válidas en una lista, sigue estos pasos:
Paso 1: Desarrollo de la Aplicación Java
Desarrolla la aplicación Java que realizará la validación de las direcciones de correo electrónico en la lista de texto y almacenará las direcciones válidas en otra lista.
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValidadorCorreoElectronico {
public static void main(String[] args) {
// Lista de direcciones de correo electrónico
List<String> direcciones = new ArrayList<>();
direcciones.add("usuario1@email.com");
direcciones.add("correo2@dominio.com");
direcciones.add("correo3@com");
direcciones.add("correo4@dominio");
// Patrón de expresión regular para validar correos electrónicos
String patron = "\\b[\\w.%-]+@[-.\\w]+\\.[A-Za-z]{2,4}\\b";
Pattern pattern = Pattern.compile(patron);
// Lista para almacenar direcciones de correo electrónico válidas
List<String> validas = new ArrayList<>();
// Validar las direcciones de correo electrónico
for (String direccion : direcciones) {
Matcher matcher = pattern.matcher(direccion);
if (matcher.matches()) {
validas.add(direccion);
}
}
// Imprimir las direcciones de correo electrónico válidas
System.out.println("Direcciones de correo electrónico válidas:");
for (String valida : validas) {
System.out.println(valida);
}
}
}
Paso 2: Ejecución del Programa
Ejecuta el programa para validar las direcciones de correo electrónico en la lista y almacenar las válidas en otra lista.
Resultado Esperado:
El programa mostrará las direcciones de correo electrónico válidas en la lista de direcciones proporcionada. En el ejemplo anterior, «usuario1@email.com» y «correo2@dominio.com» son direcciones válidas y se mostrarán como resultado.
Este ejercicio demuestra cómo validar direcciones de correo electrónico en una lista de texto utilizando expresiones regulares en Java y cómo almacenar las direcciones válidas en una lista separada. Puedes personalizar este ejemplo para realizar validaciones específicas de acuerdo a tus necesidades en tu aplicación.
Respuesta ejercicio 8.3.2:
Para resolver el ejercicio de crear una aplicación que administre un inventario de productos utilizando una estructura de datos como un mapa para mantener un registro de los productos y sus cantidades en stock, sigue estos pasos:
Paso 1: Desarrollo de la Aplicación Java
Desarrolla la aplicación Java que administra el inventario de productos utilizando un mapa. En este ejemplo, usaremos un HashMap
para almacenar productos como claves y sus cantidades en stock como valores.
import java.util.HashMap;
import java.util.Map;
public class InventarioProductos {
public static void main(String[] args) {
// Crear un mapa para almacenar el inventario de productos
Map<String, Integer> inventario = new HashMap<>();
// Agregar productos y sus cantidades en stock al inventario
inventario.put("Producto A", 10);
inventario.put("Producto B", 5);
inventario.put("Producto C", 15);
// Actualizar la cantidad en stock de un producto
inventario.put("Producto A", 12);
// Obtener la cantidad en stock de un producto
int cantidadProductoB = inventario.get("Producto B");
System.out.println("Cantidad en stock de Producto B: " + cantidadProductoB);
// Eliminar un producto del inventario
inventario.remove("Producto C");
// Imprimir el inventario completo
System.out.println("Inventario de productos:");
for (Map.Entry<String, Integer> entry : inventario.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue() + " unidades en stock");
}
}
}
Paso 2: Ejecución del Programa
Ejecuta el programa para administrar el inventario de productos utilizando el mapa.
Resultado Esperado:
El programa gestionará el inventario de productos, permitiendo agregar productos con sus cantidades en stock, actualizar las cantidades en stock, obtener la cantidad de un producto y eliminar productos del inventario. El inventario se imprimirá en la consola para mostrar los productos y sus cantidades en stock.
Este ejercicio muestra cómo usar una estructura de datos como un mapa en Java para gestionar un inventario de productos. Puedes personalizar este ejemplo para crear una aplicación de gestión de inventario más completa.