Menu
Coddy logo textTech

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);  // JavaScript

Ensemble, 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à.

challenge icon

Défi

Facile

Cré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 :

  1. Lire une entrée de type chaîne représentant le nom du projet
  2. 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")
  3. 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")
  4. Créer deux Sets distincts pour stocker les compétences de chaque membre de l'équipe
  5. Utiliser la méthode union() pour combiner les deux ensembles de compétences en un profil de compétences de projet complet
  6. 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 successfully

Si 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 successfully

Si 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 successfully

Votre 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
}
quiz iconTestez-vous

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