Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Guia Ejercicios Estructura de Datos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

Ejercicio guiado te lleva a través de la implementación de un

sistema de gestión de tareas utilizando varias estructuras de


datos en Java:
• Pilas (Stack): Para almacenar y mostrar tareas completadas.
• Colas (Queue): Para gestionar tareas pendientes en el orden en que fueron
agregadas.
• Listas (List): Para mantener una lista completa de todas las tareas.
• Tablas hash (HashMap): Para asociar tareas con categorías y permitir
búsquedas por categoría.

El usuario puede interactuar con el sistema a través de un menú simple, lo que


permite agregar, completar y visualizar tareas. Esto te ayudará a entender cómo y
cuándo utilizar diferentes estructuras de datos según el contexto de tu aplicación.

Descripción del Ejercicio: Sistema de Gestión de Tareas


Vamos a desarrollar un programa que permita gestionar tareas mediante diferentes
estructuras de datos en Java:

• Pila (Stack): Almacenar tareas completadas.


• Cola (Queue): Gestionar las tareas pendientes.
• Lista (List): Listar todas las tareas (completadas y pendientes).
• Tabla Hash (HashMap): Asociar tareas con categorías.

Paso 1: Crear la estructura básica del programa


Vamos a empezar creando las clases y métodos necesarios.

Clase Tarea:

Esta clase representará una tarea con un nombre, una descripción y una categoría.

import java.util.Objects;

public class Tarea {

private String nombre;


private String descripcion;

private String categoria;

public Tarea(String nombre, String descripcion, String categoria) {

this.nombre = nombre;

this.descripcion = descripcion;

this.categoria = categoria;

public String getNombre() {

return nombre;

public String getDescripcion() {

return descripcion;

public String getCategoria() {

return categoria;

@Override

public String toString() {

return nombre + " (" + categoria + "): " + descripcion;

}
@Override

public boolean equals(Object o) {

if (this == o) return true;

if (o == null || getClass() != o.getClass()) return false;

Tarea tarea = (Tarea) o;

return Objects.equals(nombre, tarea.nombre);

@Override

public int hashCode() {

return Objects.hash(nombre);

}
Paso 2: Implementar la gestión de tareas con diferentes
estructuras de datos
Ahora implementaremos la gestión de tareas utilizando una pila para las tareas
completadas, una cola para las pendientes, una lista para todas las tareas, y una
tabla hash para asociar tareas con categorías.

Clase GestionTareas:

import java.util.*;

public class GestionTareas {

private Stack<Tarea> tareasCompletadas;

private Queue<Tarea> tareasPendientes;

private List<Tarea> todasLasTareas;

private HashMap<String, List<Tarea>> tareasPorCategoria;

public GestionTareas() {

tareasCompletadas = new Stack<>();

tareasPendientes = new LinkedList<>();

todasLasTareas = new ArrayList<>();

tareasPorCategoria = new HashMap<>();

// Agregar una nueva tarea

public void agregarTarea(String nombre, String descripcion, String categoria) {


Tarea tarea = new Tarea(nombre, descripcion, categoria);

tareasPendientes.add(tarea);

todasLasTareas.add(tarea);

tareasPorCategoria.computeIfAbsent(categoria, k -> new


ArrayList<>()).add(tarea);

System.out.println("Tarea agregada: " + tarea);

// Completar una tarea

public void completarTarea() {

if (!tareasPendientes.isEmpty()) {

Tarea tarea = tareasPendientes.poll();

tareasCompletadas.push(tarea);

System.out.println("Tarea completada: " + tarea);

} else {

System.out.println("No hay tareas pendientes.");

// Mostrar todas las tareas

public void mostrarTodasLasTareas() {

System.out.println("Todas las tareas:");

for (Tarea tarea : todasLasTareas) {

System.out.println(tarea);

}
// Mostrar tareas por categoría

public void mostrarTareasPorCategoria(String categoria) {

List<Tarea> tareas = tareasPorCategoria.get(categoria);

if (tareas != null) {

System.out.println("Tareas en la categoría " + categoria + ":");

for (Tarea tarea : tareas) {

System.out.println(tarea);

} else {

System.out.println("No hay tareas en la categoría " + categoria);

// Mostrar tareas completadas

public void mostrarTareasCompletadas() {

System.out.println("Tareas completadas:");

for (Tarea tarea : tareasCompletadas) {

System.out.println(tarea);

// Mostrar tareas pendientes

public void mostrarTareasPendientes() {

System.out.println("Tareas pendientes:");

for (Tarea tarea : tareasPendientes) {


System.out.println(tarea);

}
Paso 3: Crear la interfaz de usuario
Ahora vamos a crear un menú simple que permita al usuario interactuar con el
sistema de gestión de tareas.

Clase Main:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

GestionTareas gestionTareas = new GestionTareas();

Scanner scanner = new Scanner(System.in);

int opcion;

do {

System.out.println("\n--- Sistema de Gestión de Tareas ---");

System.out.println("1. Agregar Tarea");

System.out.println("2. Completar Tarea");

System.out.println("3. Mostrar Todas las Tareas");

System.out.println("4. Mostrar Tareas por Categoría");

System.out.println("5. Mostrar Tareas Completadas");

System.out.println("6. Mostrar Tareas Pendientes");

System.out.println("7. Salir");

System.out.print("Seleccione una opción: ");

opcion = scanner.nextInt();

scanner.nextLine(); // Consumir la nueva línea


switch (opcion) {

case 1:

System.out.print("Nombre de la tarea: ");

String nombre = scanner.nextLine();

System.out.print("Descripción de la tarea: ");

String descripcion = scanner.nextLine();

System.out.print("Categoría de la tarea: ");

String categoria = scanner.nextLine();

gestionTareas.agregarTarea(nombre, descripcion, categoria);

break;

case 2:

gestionTareas.completarTarea();

break;

case 3:

gestionTareas.mostrarTodasLasTareas();

break;

case 4:

System.out.print("Ingrese la categoría: ");

String cat = scanner.nextLine();

gestionTareas.mostrarTareasPorCategoria(cat);

break;

case 5:

gestionTareas.mostrarTareasCompletadas();

break;

case 6:
gestionTareas.mostrarTareasPendientes();

break;

case 7:

System.out.println("Saliendo del sistema...");

break;

default:

System.out.println("Opción no válida. Intente nuevamente.");

} while (opcion != 7);

scanner.close();

También podría gustarte