Intersection d'ensembles
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 23 sur 65.
Lorsque vous avez besoin de trouver des éléments qui existent dans chacune de deux collections Set, la méthode intersection() fournit la solution parfaite. Cette opération identifie les éléments communs entre deux ensembles, créant un nouvel ensemble qui contient uniquement les éléments qui apparaissent dans les deux collections d'origine.
La méthode intersection() fonctionne en comparant les éléments de deux ensembles et en renvoyant un nouvel ensemble contenant uniquement les valeurs partagées. Comme les autres opérations sur les ensembles, elle gère automatiquement l'unicité, de sorte que chaque élément commun n'apparaît qu'une seule fois dans le résultat.
Set<String> aliceFriends = {'Bob', 'Charlie', 'Diana', 'Eve'};
Set<String> bobFriends = {'Alice', 'Charlie', 'Frank', 'Diana'};
Set<String> mutualFriends = aliceFriends.intersection(bobFriends);
print(mutualFriends); // {Charlie, Diana}Cette opération est particulièrement utile pour trouver des chevauchements dans les données, tels que des intérêts communs entre les utilisateurs, des compétences partagées au sein des équipes ou des critères de correspondance dans les opérations de filtrage. L'intersection vous aide à identifier ce que deux collections ont en commun, ce qui la rend précieuse pour les tâches de comparaison et d'analyse.
Défi
FacileCréez un programme qui gère une plateforme de médias sociaux en trouvant les connexions mutuelles entre deux utilisateurs. Votre programme doit :
- Lire une chaîne de caractères représentant le nom du premier utilisateur
- Lire plusieurs chaînes de caractères représentant les connexions du premier utilisateur (la saisie se terminera lorsque vous recevrez
"user1_done") - Lire une chaîne de caractères représentant le nom du deuxième utilisateur
- Lire plusieurs chaînes de caractères représentant les connexions du deuxième utilisateur (la saisie se terminera lorsque vous recevrez
"user2_done") - Créer deux Sets distincts pour stocker les connexions de chaque utilisateur
- Utiliser la méthode
intersection()pour trouver les connexions mutuelles entre les deux utilisateurs - Afficher les résultats de l'analyse de connexion dans le format exact indiqué ci-dessous
Par exemple, si le premier utilisateur est "Alice" avec les connexions "Bob", "Charlie", "Diana", "Eve", et que le deuxième utilisateur est "Bob" avec les connexions "Alice", "Charlie", "Frank", "Diana", votre programme doit afficher :
User Analysis: Finding mutual connections
Alice's connections: {Bob, Charlie, Diana, Eve}
Bob's connections: {Alice, Charlie, Frank, Diana}
Mutual connections: {Charlie, Diana}
Total mutual connections: 2
Connection strength: Strong (2+ mutual connections)
Status: Users have mutual connectionsSi le premier utilisateur est "Sarah" avec les connexions "John", "Mike", "Lisa", et que le deuxième utilisateur est "Tom" avec les connexions "Emma", "David", "Kate", votre programme doit afficher :
User Analysis: Finding mutual connections
Sarah's connections: {John, Mike, Lisa}
Tom's connections: {Emma, David, Kate}
Mutual connections: {}
Total mutual connections: 0
Connection strength: None (no mutual connections)
Status: Users have no mutual connectionsSi le premier utilisateur est "Emma" avec les connexions "Alex", "Jordan", "Taylor", "Morgan", et que le deuxième utilisateur est "Jordan" avec les connexions "Emma", "Taylor", "Casey", votre programme doit afficher :
User Analysis: Finding mutual connections
Emma's connections: {Alex, Jordan, Taylor, Morgan}
Jordan's connections: {Emma, Taylor, Casey}
Mutual connections: {Taylor}
Total mutual connections: 1
Connection strength: Weak (1 mutual connection)
Status: Users have mutual connectionsVotre programme doit utiliser la méthode intersection() pour trouver les connexions communes entre les deux Sets d'utilisateurs. Déterminez la force de la connexion en fonction du nombre de connexions mutuelles : "None" pour 0 connexion mutuelle, "Weak" pour exactement 1 connexion mutuelle, et "Strong" pour 2 connexions mutuelles ou plus. S'il y a des connexions mutuelles, affichez "Users have mutual connections" comme statut, sinon affichez "Users have no mutual connections".
Aide-mémoire
La méthode intersection() trouve les éléments communs entre deux ensembles, retournant un nouvel ensemble contenant uniquement les valeurs partagées :
Set<String> aliceFriends = {'Bob', 'Charlie', 'Diana', 'Eve'};
Set<String> bobFriends = {'Alice', 'Charlie', 'Frank', 'Diana'};
Set<String> mutualFriends = aliceFriends.intersection(bobFriends);
print(mutualFriends); // {Charlie, Diana}Cette opération gère automatiquement l'unicité et est utile pour trouver des chevauchements dans les données, tels que des intérêts communs, des compétences partagées ou des critères de correspondance dans les opérations de filtrage.
Essayez vous-même
import 'dart:io';
void main() {
// Lire le nom du premier utilisateur
String? user1Name = stdin.readLineSync();
// Lire les connexions du premier utilisateur jusqu'à "user1_done"
Set<String> user1Connections = <String>{};
String? connection;
while ((connection = stdin.readLineSync()) != "user1_done") {
if (connection != null) {
user1Connections.add(connection);
}
}
// Lire le nom du deuxième utilisateur
String? user2Name = stdin.readLineSync();
// Lire les connexions du deuxième utilisateur jusqu'à "user2_done"
Set<String> user2Connections = <String>{};
while ((connection = stdin.readLineSync()) != "user2_done") {
if (connection != null) {
user2Connections.add(connection);
}
}
// TODO: Écrivez votre code ci-dessous
// Trouver les connexions mutuelles en utilisant la méthode intersection()
// Déterminer la force de la connexion en fonction du nombre de connexions mutuelles
// Générer le format de sortie requis
// Afficher les résultats de l'analyse
print("User Analysis: Finding mutual connections");
// Ajoutez vos instructions de sortie ici
}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