Java
Ejercicios
Ejercicios
  • 02-Estructuras de control y bucles
    • Ejercicios de estructuras de control
    • Ejercicios de estructuras de control II
  • 06-Patrones de diseño
    • Ejercicio MVC en JAVA
  • 08-Flujos y Ficheros
    • Ejercicio de Redirección y Comunicación entre Procesos en Java
    • Ejercicio de Comunicación y Sincronización entre Tres Procesos en Java
  • 08-Flujos y Ficheros
  • 10-Swing
    • Ejercicio Aplicación de Notas Simples
    • Ejercicio Cálculadora básica
    • Ejercicio: Aplicación de Lista de Tareas con layouts
    • Ejercicio: Dibujo de figuras con Graphics
    • Ejercicio: Aplicación de Control de Color de un Rectángulo
    • Ejercicio: Dibujo de una clase vista
  • 03-Arrays y colecciones
    • 03.01-Arrays
      • Sistema de Gestión de Cine
      • Ejercicios básicos de arrays
    • 03.02-Colecciones
      • Sistema de Gestión de Canales de YouTube
  • 05-POO
    • 05.1-POO Iniciación
      • Ejercicio: Sistema de Gestión para una Biblioteca
      • Ejercicio de arrays. Aventura de los Patapons
      • Ejercicios básicos sobre POO
    • 05.2-POO Clases Abstractas
      • Sistema de Gestión de Vehículos
    • 05.6-Generales de POO
      • Ejercicio: Sistema de Gestión de Empleados
      • Aventuras en el Laberinto Encantado
      • Ejercicio de Pasapalabra
  • Soluciones
    • 02-Estructuras de control y bucles
      • [Solución] Ejercicios de estructuras de control II
    • 06-Patrones de diseño
      • [Solucion] Ejercicio MVC en JAVA
    • 08-Flujos y Ficheros
      • Solución de Ejercicio de Redirección y Comunicación entre Procesos en Java
      • Solución de Ejercicio de Comunicación y Sincronización entre Tres Procesos en Java
    • 10-Swing
      • [Solución] Ejercicio Aplicación de Notas Simples
      • [Solución] Ejercicio Cálculadora Simple
      • [Solución] Ejercicio: Aplicación de Lista de Tareas con layouts
      • [Solución] Ejercicio: Dibujo de figuras con Graphics
      • [Solución] Ejercicio: Dibujo de figuras con Graphics
      • [Solución] Ejercicio: Aplicación de Control de Color de un Rectángulo
    • 03-Arrays y colecciones
      • 03.01-Arrays
        • [Solución] Ejercicios de estructuras de control 2
        • [Solución] Sistema de Gestión de Cine
        • [Solución] Ejercicios básicos de arrays
      • 03.02-Colecciones
        • [Solución] Sistema de Gestión de Canales de YouTube
    • 05-POO
      • 05.1-POO Iniciación
        • [Solución] Ejercicio de arrays. Aventura de los Patapons
        • [Solución] Ejercicios básicos sobre POO
      • 05.2-POO Clases Abstractas
        • [Solución] Sistema de Gestión de Vehículos
      • 05.6-Generales de POO
        • Solución de Sistema de Gestión de Empleados
        • [Solución] Aventuras en el Laberinto Encantado
        • [Solución] Ejercicio de Pasapalabra
Powered by GitBook
On this page
  • GestionCanalesYoutube.java
  • main.java
  1. Soluciones
  2. 03-Arrays y colecciones
  3. 03.02-Colecciones

[Solución] Sistema de Gestión de Canales de YouTube

GestionCanalesYoutube.java

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class GestionCanalesYouTube {

    // Utilizamos un HashSet para almacenar los nombres de los canales de YouTube.
    private Set<String> canales;
    
    // Utilizamos un HashMap para asociar cada canal con una lista de videos populares.
    private Map<String, List<String>> videosPopulares;

    // Constructor para inicializar las colecciones.
    public GestionCanalesYouTube() {
        this.canales = new HashSet<>();
        this.videosPopulares = new HashMap<>();
    }

    // Método para agregar un canal a la colección.
    public void agregarCanal(String nombreCanal) {
        // Solo añade el canal si aún no existe.
        if (nombreCanal != null && !nombreCanal.isEmpty() && canales.add(nombreCanal)) {
            System.out.println("Canal agregado: " + nombreCanal);
        } else {
            System.out.println("El canal ya existe o es inválido.");
        }
    }

    // Método para eliminar un canal de la colección.
    public void eliminarCanal(String nombreCanal) {
        // Elimina el canal si existe.
        if (canales.remove(nombreCanal)) {
            // También elimina los videos asociados a ese canal.
            videosPopulares.remove(nombreCanal);
            System.out.println("Canal eliminado: " + nombreCanal);
        } else {
            System.out.println("El canal no existe o es inválido.");
        }
    }

    // Método para agregar un video a un canal específico.
    public void agregarVideoACanal(String nombreCanal, String tituloVideo) {
        // Verifica si el canal existe.
        if (canales.contains(nombreCanal) && tituloVideo != null && !tituloVideo.isEmpty()) {
            // Añade el video al canal. Si el canal no tiene videos, crea una nueva lista.
            videosPopulares.computeIfAbsent(nombreCanal, k -> new ArrayList<>()).add(tituloVideo);
            System.out.println("Video agregado al canal " + nombreCanal + ": " + tituloVideo);
        } else {
            System.out.println("El canal no existe o el video es inválido.");
        }
    }

    // Método para eliminar un video de un canal específico.
    public void eliminarVideoACanal(String nombreCanal, String tituloVideo) {
        // Verifica si el canal y el video existen.
        if (canales.contains(nombreCanal) && videosPopulares.containsKey(nombreCanal)) {
            List<String> videos = videosPopulares.get(nombreCanal);
            if (videos.remove(tituloVideo)) {
                System.out.println("Video eliminado del canal " + nombreCanal + ": " + tituloVideo);
            } else {
                System.out.println("El video no existe o es inválido.");
            }
        } else {
            System.out.println("El canal no existe.");
        }
    }

    // Método para obtener los videos populares de un canal específico.
    public List<String> obtenerVideosPopulares(String nombreCanal) {
        // Devuelve los videos del canal si existen.
        if (canales.contains(nombreCanal)) {
            return videosPopulares.getOrDefault(nombreCanal, new ArrayList<>());
        } else {
            System.out.println("El canal no existe.");
            return new ArrayList<>();
        }
    }

    // Método para obtener todos los canales.
    public Set<String> obtenerTodosLosCanales() {
        return new HashSet<>(canales); // Devuelve una copia del set de canales.
    }
}

main.java

public class Main {
    public static void main(String[] args) {
        GestionCanalesYouTube gestion = new GestionCanalesYouTube();

        // Agregando algunos canales
        gestion.agregarCanal("CanalEducacion");
        gestion.agregarCanal("CanalEntretenimiento");
        gestion.agregarCanal("CanalCocina");
        // Intentando agregar un canal duplicado
        gestion.agregarCanal("CanalEducacion");

        // Agregando videos a los canales
        gestion.agregarVideoACanal("CanalEducacion", "Aprende Java en 30 minutos");
        gestion.agregarVideoACanal("CanalEntretenimiento", "Top 10 Películas de 2024");
        gestion.agregarVideoACanal("CanalCocina", "Receta de paella para principiantes");

        // Intentando agregar un video a un canal que no existe
        gestion.agregarVideoACanal("CanalViajes", "Los mejores destinos de 2024");

        // Obteniendo y mostrando los videos populares de un canal
        System.out.println("Videos populares en CanalEducacion: " + gestion.obtenerVideosPopulares("CanalEducacion"));

        // Eliminando un video de un canal
        gestion.eliminarVideoACanal("CanalEducacion", "Aprende Java en 30 minutos");

        // Intentando eliminar un video que no existe
        gestion.eliminarVideoACanal("CanalEducacion", "Aprende Python en 30 minutos");

        // Mostrando todos los canales
        System.out.println("Todos los canales: " + gestion.obtenerTodosLosCanales());

        // Eliminando un canal
        gestion.eliminarCanal("CanalCocina");

        // Intentando eliminar un canal que no existe
        gestion.eliminarCanal("CanalViajes");

        // Mostrando todos los canales después de la eliminación
        System.out.println("Todos los canales después de eliminar: " + gestion.obtenerTodosLosCanales());
    }
}
Previous03.02-ColeccionesNext05-POO

Last updated 1 year ago