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 à l’aide de 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 d’origine.
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 union résultant, préservant 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 d’origine, mais une seule fois dans le résultat de l’union. Cela rend union() idéal pour combiner des collections connexes tout en garantissant l’absence de doublons, par exemple en fusionnant des ensembles de compétences, en combinant des autorisations utilisateur ou en consolidant des données provenant de plusieurs sources.
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 communs :
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 chaîne lisible à l’aide de la méthode join(). Cela fonctionne de la même manière qu’avec une List. Elle rassemble 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’ensembles, par exemple en combinant les ensembles de compétences des équipes et en identifiant les compétences qu’elles 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 afin de créer un profil complet des compétences nécessaires au projet. Votre programme doit :
- Lire une chaîne de caractères représentant le nom du projet
- Lire plusieurs chaînes de caractères représentant les compétences du premier membre de l’équipe (la saisie se terminera lorsque vous recevrez
"member1_done") - Lire plusieurs chaînes de caractères représentant les compétences du deuxième membre de l’équipe (la saisie se terminera lorsque vous recevrez
"member2_done") - Créer deux ensembles 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 complet des compétences nécessaires au projet - Afficher les résultats de la combinaison des 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, afin de montrer comment elle gère automatiquement les doublons. Affichez d’abord les ensembles de compétences individuels, puis le résultat combiné. Identifiez les compétences communes en recherchant les compétences qui apparaissent dans les deux ensembles d’origine. S’il n’y a aucune compétence commune, affichez « None » sur 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
// Find overlapping skills between the two sets
// Calculate total unique skills
// Afficher les résultats dans le format requis
print("Project: $projectName");
print("Team Member 1 skills: $member1Skills");
print("Team Member 2 skills: $member2Skills");
// Print combined skills, total count, overlapping skills, and status
}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 uniquesEntraînez-vous par vous-même : Compilateur Dart en ligne