[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());
    }
}

Last updated