Unión de Conjuntos
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 22 de 65.
Cuando tienes dos colecciones Set separadas, puedes combinarlas en un único conjunto que contenga todos los elementos únicos de ambos utilizando el método union(). Esta operación crea un nuevo conjunto que incluye cada elemento que aparece en cualquiera de los conjuntos originales.
El método union() maneja automáticamente los duplicados por ti. Si el mismo elemento existe en ambos conjuntos, aparecerá solo una vez en el conjunto resultante de la unión, manteniendo la propiedad fundamental de que los conjuntos contienen solo valores únicos.
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> allSkills = frontendSkills.union(backendSkills);
print(allSkills); // {HTML, CSS, JavaScript, Python, SQL}Observe cómo 'JavaScript' aparece en ambos conjuntos originales, pero solo una vez en el resultado de la unión. Esto hace que union() sea perfecto para combinar colecciones relacionadas asegurando que no haya duplicados, como al fusionar conjuntos de habilidades, combinar permisos de usuario o consolidar datos de múltiples fuentes.
También puedes encontrar solo los elementos que dos conjuntos comparten utilizando el método intersection(). Devuelve un nuevo conjunto que contiene solo los elementos que aparecen en ambos conjuntos.
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills); // {JavaScript}Para mostrar los elementos de un conjunto como una única cadena legible, utiliza el método join(). Puedes pasar una cadena separadora para colocar entre cada elemento.
Set<String> sharedSkills = {'JavaScript'};
print(sharedSkills.join(', ')); // JavaScript
Set<String> allSkills = {'HTML', 'CSS', 'JavaScript', 'Python', 'SQL'};
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQLDesafío
FácilCrea un programa que gestione un sistema de redes profesionales combinando conjuntos de habilidades de diferentes miembros del equipo para crear un perfil de habilidades de proyecto integral. Tu programa debe:
- Leer una entrada de cadena que represente el nombre del proyecto
- Leer múltiples entradas de cadena que representen las habilidades del primer miembro del equipo (la entrada terminará cuando recibas
"member1_done") - Leer múltiples entradas de cadena que representen las habilidades del segundo miembro del equipo (la entrada terminará cuando recibas
"member2_done") - Crear dos Sets separados para almacenar las habilidades de cada miembro del equipo
- Usar el método
union()para combinar ambos conjuntos de habilidades en un perfil de habilidades de proyecto integral - Imprimir los resultados de la combinación de habilidades en el formato exacto que se muestra a continuación
Por ejemplo, si el nombre del proyecto es "Web Development Project", las habilidades del primer miembro son "HTML", "CSS", "JavaScript", "React", y las habilidades del segundo miembro son "JavaScript", "Node.js", "MongoDB", "React", tu programa debería mostrar:
Project: Web Development Project
Team Member 1 skills: {HTML, CSS, JavaScript, React}
Team Member 2 skills: {JavaScript, Node.js, MongoDB, React}
Combined project skills: {HTML, CSS, JavaScript, React, Node.js, MongoDB}
Total unique skills available: 6
Overlapping skills: JavaScript, React
Status: Project skill profile created successfullySi el nombre del proyecto es "Mobile App Development", las habilidades del primer miembro son "Dart", "Flutter", "Firebase", y las habilidades del segundo miembro son "Swift", "iOS", "Xcode", tu programa debería mostrar:
Project: Mobile App Development
Team Member 1 skills: {Dart, Flutter, Firebase}
Team Member 2 skills: {Swift, iOS, Xcode}
Combined project skills: {Dart, Flutter, Firebase, Swift, iOS, Xcode}
Total unique skills available: 6
Overlapping skills: None
Status: Project skill profile created successfullySi el nombre del proyecto es "Data Science Project", las habilidades del primer miembro son "Python", "Pandas", "NumPy", "SQL", y las habilidades del segundo miembro son "Python", "SQL", "Tableau", "Statistics", tu programa debería mostrar:
Project: Data Science Project
Team Member 1 skills: {Python, Pandas, NumPy, SQL}
Team Member 2 skills: {Python, SQL, Tableau, Statistics}
Combined project skills: {Python, Pandas, NumPy, SQL, Tableau, Statistics}
Total unique skills available: 6
Overlapping skills: Python, SQL
Status: Project skill profile created successfullyTu programa debe usar el método union() para combinar los dos conjuntos de habilidades, demostrando cómo maneja automáticamente los duplicados. Muestra primero los conjuntos de habilidades individuales y luego el resultado combinado. Identifica cualquier habilidad superpuesta encontrando las habilidades que aparecen en ambos conjuntos originales. Si no hay habilidades superpuestas, muestra "None" para la línea de habilidades superpuestas.
Hoja de referencia
El método union() combina dos conjuntos en un único conjunto que contiene todos los elementos únicos de ambos conjuntos:
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> allSkills = frontendSkills.union(backendSkills);
print(allSkills); // {HTML, CSS, JavaScript, Python, SQL}El método union() maneja automáticamente los duplicados: si el mismo elemento existe en ambos conjuntos, aparece solo una vez en el conjunto resultante.
El método intersection() devuelve un nuevo conjunto que contiene solo los elementos que existen en ambos conjuntos:
Set<String> commonSkills = frontendSkills.intersection(backendSkills);
print(commonSkills); // {JavaScript}El método join() convierte un conjunto en un String concatenando todos los elementos, con un separador opcional:
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQLPruébalo tú mismo
import 'dart:io';
void main() {
// Leer el nombre del proyecto
String? projectName = stdin.readLineSync();
// Leer las habilidades del primer miembro del equipo
Set<String> member1Skills = <String>{};
String? skill;
while ((skill = stdin.readLineSync()) != "member1_done") {
if (skill != null) {
member1Skills.add(skill);
}
}
// Leer las habilidades del segundo miembro del equipo
Set<String> member2Skills = <String>{};
while ((skill = stdin.readLineSync()) != "member2_done") {
if (skill != null) {
member2Skills.add(skill);
}
}
// TODO: Escribe tu código a continuación
// Usa el método union() para combinar ambos conjuntos de habilidades
// Encuentra las habilidades superpuestas entre los dos conjuntos
// Calcula el total de habilidades únicas
// Mostrar los resultados en el formato requerido
print("Project: $projectName");
print("Team Member 1 skills: $member1Skills");
print("Team Member 2 skills: $member2Skills");
// Imprimir habilidades combinadas, recuento total, habilidades superpuestas y estado
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única