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 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 d'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 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.

Vous pouvez également trouver uniquement les éléments que deux ensembles partagent en utilisant la méthode intersection(). Elle renvoie un nouvel ensemble contenant uniquement les éléments qui apparaissent dans les deux ensembles.


Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};

Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills);  // {JavaScript}

Pour afficher les éléments d'un ensemble sous forme d'une seule chaîne de caractères lisible, utilisez la méthode join(). Vous pouvez passer une chaîne de séparation à insérer entre chaque élément.


Set<String> sharedSkills = {'JavaScript'};
print(sharedSkills.join(', '));  // JavaScript

Set<String> allSkills = {'HTML', 'CSS', 'JavaScript', 'Python', 'SQL'};
print(allSkills.join(', '));  // HTML, CSS, JavaScript, Python, SQL
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 chaîne de caractères en entrée représentant le nom du projet
  2. Lire plusieurs chaînes de caractères en entrée 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 en entrée 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 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.

Aide-mémoire

La méthode union() combine deux ensembles en un seul ensemble contenant tous les éléments uniques des deux ensembles :

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}

La méthode union() gère automatiquement les doublons - si le même élément existe dans les deux ensembles, il n'apparaît qu'une seule fois dans l'ensemble résultant.

La méthode intersection() renvoie un nouvel ensemble contenant uniquement les éléments qui existent dans les deux ensembles :

Set<String> commonSkills = frontendSkills.intersection(backendSkills);
print(commonSkills);  // {JavaScript}

La méthode join() convertit un ensemble en une String en concaténant tous les éléments, avec un séparateur optionnel :

print(allSkills.join(', '));  // HTML, CSS, JavaScript, Python, SQL

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
  // Utiliser 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