Menu
Coddy logo textTech

Set-Vereinigung

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 22 von 65.

Wenn Sie zwei separate Set-Sammlungen haben, können Sie diese mithilfe der Methode union() zu einem einzigen Set kombinieren, das alle eindeutigen Elemente aus beiden enthält. Diese Operation erstellt ein neues Set, das jedes Element enthält, das in mindestens einem der ursprünglichen Sets vorkommt.

Die Methode union() verarbeitet Duplikate automatisch für Sie. Wenn dasselbe Element in beiden Sets vorhanden ist, erscheint es in der resultierenden Vereinigungsmenge nur einmal, wodurch die grundlegende Eigenschaft gewahrt bleibt, dass Sets nur eindeutige Werte enthalten.

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}

Beachten Sie, wie 'JavaScript' in beiden ursprünglichen Mengen vorkommt, aber nur einmal im Ergebnis der Vereinigung. Dies macht union() perfekt für das Kombinieren verwandter Sammlungen, während gleichzeitig sichergestellt wird, dass keine Duplikate entstehen, wie zum Beispiel beim Zusammenführen von Skill-Sets, dem Kombinieren von Benutzerberechtigungen oder dem Konsolidieren von Daten aus mehreren Quellen.

Um Elemente zu finden, die in beiden Sets vorkommen, verwende die intersection()-Methode. Sie gibt ein neues Set zurück, das nur die gemeinsamen Elemente enthält:

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

Sobald Sie eine Menge überlappender Elemente haben, können Sie diese mit der Methode join() in einen lesbaren String umwandeln. Dies funktioniert genauso wie bei einer List — es verbindet alle Elemente zu einem einzigen String mit einem von Ihnen angegebenen Trennzeichen:

Set<String> overlap = frontendSkills.intersection(backendSkills);
String result = overlap.isEmpty ? 'None' : overlap.join(', ');
print(result);  // JavaScript

Zusammen bieten union(), intersection() und join() Ihnen leistungsstarke Werkzeuge zum Vergleichen und Anzeigen von Mengendaten – zum Beispiel zum Kombinieren von Team-Fähigkeiten und zum Identifizieren, welche Fähigkeiten sie bereits teilen.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das ein professionelles Networking-System verwaltet, indem es die Fähigkeiten verschiedener Teammitglieder kombiniert, um ein umfassendes Projekt-Skill-Profil zu erstellen. Ihr Programm sollte:

  1. Eine String-Eingabe lesen, die den Projektnamen darstellt
  2. Mehrere String-Eingaben lesen, die die Fähigkeiten des ersten Teammitglieds darstellen (die Eingabe endet, wenn Sie "member1_done" erhalten)
  3. Mehrere String-Eingaben lesen, die die Fähigkeiten des zweiten Teammitglieds darstellen (die Eingabe endet, wenn Sie "member2_done" erhalten)
  4. Zwei separate Sets erstellen, um die Fähigkeiten jedes Teammitglieds zu speichern
  5. Die Methode union() verwenden, um beide Skill-Sets zu einem umfassenden Projekt-Skill-Profil zu kombinieren
  6. Die Ergebnisse der Skill-Kombination im unten gezeigten exakten Format ausgeben

Wenn der Projektname beispielsweise "Web Development Project" ist, die Fähigkeiten des ersten Mitglieds "HTML", "CSS", "JavaScript", "React" sind und die Fähigkeiten des zweiten Mitglieds "JavaScript", "Node.js", "MongoDB", "React" sind, sollte Ihr Programm Folgendes ausgeben:

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

Wenn der Projektname "Mobile App Development" ist, die Fähigkeiten des ersten Mitglieds "Dart", "Flutter", "Firebase" sind und die Fähigkeiten des zweiten Mitglieds "Swift", "iOS", "Xcode" sind, sollte Ihr Programm Folgendes ausgeben:

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

Wenn der Projektname "Data Science Project" ist, die Fähigkeiten des ersten Mitglieds "Python", "Pandas", "NumPy", "SQL" sind und die Fähigkeiten des zweiten Mitglieds "Python", "SQL", "Tableau", "Statistics" sind, sollte Ihr Programm Folgendes ausgeben:

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

Ihr Programm muss die Methode union() verwenden, um die beiden Skill-Sets zu kombinieren, und dabei demonstrieren, wie sie Duplikate automatisch verarbeitet. Zeigen Sie zuerst die einzelnen Skill-Sets an, dann das kombinierte Ergebnis. Identifizieren Sie alle überlappenden Fähigkeiten, indem Sie Fähigkeiten finden, die in beiden ursprünglichen Sets vorkommen. Wenn es keine überlappenden Fähigkeiten gibt, zeigen Sie "None" für die Zeile der überlappenden Fähigkeiten an.

Probier es selbst

import 'dart:io';

void main() {
  // Projektnamen lesen
  String? projectName = stdin.readLineSync();
  
  // Fähigkeiten des ersten Teammitglieds lesen
  Set<String> member1Skills = <String>{};
  String? skill;
  while ((skill = stdin.readLineSync()) != "member1_done") {
    if (skill != null) {
      member1Skills.add(skill);
    }
  }
  
  // Fähigkeiten des zweiten Teammitglieds lesen
  Set<String> member2Skills = <String>{};
  while ((skill = stdin.readLineSync()) != "member2_done") {
    if (skill != null) {
      member2Skills.add(skill);
    }
  }
  
  // TODO: Schreibe deinen Code unten
  // Verwende die union() Methode, um beide Skill-Sets zu kombinieren
  // Finde überschneidende Fähigkeiten zwischen den beiden Sets
  // Berechne die Gesamtzahl der einzigartigen Fähigkeiten
  
  // Gib die Ergebnisse im erforderlichen Format aus
  print("Project: $projectName");
  print("Team Member 1 skills: $member1Skills");
  print("Team Member 2 skills: $member2Skills");
  // Gib kombinierte Fähigkeiten, Gesamtzahl, überschneidende Fähigkeiten und Status aus
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf