Union d'ensembles
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 22 sur 65.
Lorsque vous avez deux collections Set distinctes, vous pouvez les combiner en un seul ensemble contenant tous les éléments uniques des deux en utilisant la méthode union(). Cette opération crée un nouvel ensemble qui inclut chaque élément apparaissant dans l'un ou l'autre des ensembles originaux.
La méthode union() gère automatiquement les doublons pour vous. Si le même élément existe dans les deux ensembles, il n'apparaîtra qu'une seule fois dans l'ensemble d'union résultant, conservant ainsi la propriété fondamentale selon laquelle les ensembles ne contiennent que des valeurs uniques.
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}Remarquez comment 'JavaScript' apparaît dans les deux ensembles originaux mais une seule fois dans le résultat de l'union. Cela rend union() parfait pour combiner des collections liées tout en garantissant l'absence de doublons, comme la fusion d'ensembles de compétences, la combinaison de permissions d'utilisateurs ou la consolidation de données provenant de sources multiples.
Pour trouver les éléments qui apparaissent dans les deux ensembles, utilisez la méthode intersection(). Elle renvoie un nouvel ensemble contenant uniquement les éléments partagés :
Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills); // {JavaScript}Une fois que vous avez un ensemble d'éléments qui se chevauchent, vous pouvez le convertir en une chaîne lisible à l'aide de la méthode join(). Cela fonctionne de la même manière que sur une List — cela joint tous les éléments en une seule chaîne avec un séparateur que vous fournissez :
Set<String> overlap = frontendSkills.intersection(backendSkills);
String result = overlap.isEmpty ? 'None' : overlap.join(', ');
print(result); // JavaScriptEnsemble, union(), intersection() et join() vous offrent des outils puissants pour comparer et afficher des données d'ensemble — par exemple, pour combiner les compétences d'une équipe et identifier les compétences qu'ils partagent déjà.
Défi
FacileCréez un programme qui gère un système de réseautage professionnel en combinant les ensembles de compétences de différents membres de l'équipe pour créer un profil de compétences de projet complet. Votre programme doit :
- Lire une entrée de type chaîne représentant le nom du projet
- Lire plusieurs entrées de type chaîne représentant les compétences du premier membre de l'équipe (l'entrée se terminera lorsque vous recevrez
"member1_done") - Lire plusieurs entrées de type chaîne représentant les compétences du deuxième membre de l'équipe (l'entrée se terminera lorsque vous recevrez
"member2_done") - Créer deux Sets distincts pour stocker les compétences de chaque membre de l'équipe
- Utiliser la méthode
union()pour combiner les deux ensembles de compétences en un profil de compétences de projet complet - Afficher les résultats de la combinaison de compétences dans le format exact indiqué ci-dessous
Par exemple, si le nom du projet est "Web Development Project", que les compétences du premier membre sont "HTML", "CSS", "JavaScript", "React", et que les compétences du deuxième membre sont "JavaScript", "Node.js", "MongoDB", "React", votre programme doit afficher :
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 le nom du projet est "Mobile App Development", que les compétences du premier membre sont "Dart", "Flutter", "Firebase", et que les compétences du deuxième membre sont "Swift", "iOS", "Xcode", votre programme doit afficher :
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 le nom du projet est "Data Science Project", que les compétences du premier membre sont "Python", "Pandas", "NumPy", "SQL", et que les compétences du deuxième membre sont "Python", "SQL", "Tableau", "Statistics", votre programme doit afficher :
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 successfullyVotre programme doit utiliser la méthode union() pour combiner les deux ensembles de compétences, démontrant ainsi comment elle gère automatiquement les doublons. Affichez d'abord les ensembles de compétences individuels, puis le résultat combiné. Identifiez toutes les compétences communes en trouvant les compétences qui apparaissent dans les deux ensembles d'origine. S'il n'y a pas de compétences communes, affichez "None" pour la ligne des compétences communes.
Essayez vous-même
import 'dart:io';
void main() {
// Lire le nom du projet
String? projectName = stdin.readLineSync();
// Lire les compétences du premier membre de l'équipe
Set<String> member1Skills = <String>{};
String? skill;
while ((skill = stdin.readLineSync()) != "member1_done") {
if (skill != null) {
member1Skills.add(skill);
}
}
// Lire les compétences du deuxième membre de l'équipe
Set<String> member2Skills = <String>{};
while ((skill = stdin.readLineSync()) != "member2_done") {
if (skill != null) {
member2Skills.add(skill);
}
}
// TODO: Écrivez votre code ci-dessous
// Utilisez la méthode union() pour combiner les deux ensembles de compétences
// Trouver les compétences communes entre les deux ensembles
// Calculer le nombre total de compétences uniques
// Afficher les résultats au format requis
print("Project: $projectName");
print("Team Member 1 skills: $member1Skills");
print("Team Member 2 skills: $member2Skills");
// Afficher les compétences combinées, le nombre total, les compétences communes et le statut
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques