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

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

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 afin de créer un profil complet des compétences nécessaires au projet. Votre programme doit :

  1. Lire une chaîne de caractères représentant le nom du projet
  2. 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")
  3. 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")
  4. Créer deux ensembles 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 complet des compétences nécessaires au projet
  6. 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 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, 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
}
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

Entraînez-vous par vous-même : Compilateur Dart en ligne