Menu
Coddy logo textTech

Set-Vereinigung

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

Wenn du zwei separate Set-Sammlungen hast, kannst du sie mithilfe der Methode union() zu einer einzigen Menge kombinieren, die alle eindeutigen Elemente aus beiden enthält. Dieser Vorgang erstellt eine neue Menge, die jedes Element umfasst, das in einer der ursprünglichen Mengen vorkommt.

Die Methode union() behandelt Duplikate automatisch für dich. Wenn dasselbe Element in beiden Mengen vorhanden ist, erscheint es in der resultierenden Vereinigungsmenge nur einmal, wodurch die grundlegende Eigenschaft erhalten bleibt, dass Mengen 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}

Beachte, wie „JavaScript“ in beiden ursprünglichen Mengen vorkommt, aber im Ergebnis der Vereinigung nur einmal erscheint. Dadurch eignet sich union() perfekt zum Kombinieren verwandter Sammlungen, während Duplikate vermieden werden, etwa beim Zusammenführen von Kompetenzmengen, beim Kombinieren von Benutzerberechtigungen oder beim Konsolidieren von Daten aus mehreren Quellen.

Um Elemente zu finden, die in beiden Mengen vorkommen, verwende die Methode intersection(). Sie gibt eine neue Menge zurück, die nur die gemeinsamen Elemente enthält:

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

Sobald du eine Menge überlappender Elemente hast, kannst du sie mithilfe der join()-Methode in eine lesbare Zeichenfolge umwandeln. Das funktioniert genauso wie bei einer List. Dabei werden alle Elemente mit einem von dir angegebenen Trennzeichen zu einer einzigen Zeichenfolge verbunden:

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

Zusammen bieten union(), intersection() und join() leistungsstarke Werkzeuge zum Vergleichen und Anzeigen von Mengendaten, beispielsweise zum Kombinieren der Fähigkeiten von Teams und zum Ermitteln, welche Fähigkeiten sie bereits gemeinsam haben.

challenge icon

Aufgabe

Einfach

Erstelle ein Programm, das ein professionelles Networking-System verwaltet, indem es die Fähigkeiten verschiedener Teammitglieder kombiniert, um ein umfassendes Kompetenzprofil für ein Projekt zu erstellen. Dein Programm sollte:

  1. Eine Zeichenketteneingabe lesen, die den Projektnamen darstellt
  2. Mehrere Zeichenketteneingaben lesen, die die Fähigkeiten des ersten Teammitglieds darstellen (die Eingabe endet, wenn du "member1_done" erhältst)
  3. Mehrere Zeichenketteneingaben lesen, die die Fähigkeiten des zweiten Teammitglieds darstellen (die Eingabe endet, wenn du "member2_done" erhältst)
  4. Zwei separate Sets erstellen, um die Fähigkeiten der beiden Teammitglieder zu speichern
  5. Die Methode union() verwenden, um beide Fähigkeitensets zu einem umfassenden Kompetenzprofil für das Projekt zu kombinieren
  6. Die Ergebnisse der Fähigkeitskombination im unten gezeigten exakten Format ausgeben

Wenn der Projektname beispielsweise "Web Development Project" lautet, 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 dein 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" lautet, die Fähigkeiten des ersten Mitglieds "Dart", "Flutter", "Firebase" sind und die Fähigkeiten des zweiten Mitglieds "Swift", "iOS", "Xcode" sind, sollte dein 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" lautet, die Fähigkeiten des ersten Mitglieds "Python", "Pandas", "NumPy", "SQL" sind und die Fähigkeiten des zweiten Mitglieds "Python", "SQL", "Tableau", "Statistics" sind, sollte dein 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

Dein Programm muss die Methode union() verwenden, um die beiden Fähigkeitensets zu kombinieren, und damit zeigen, wie Duplikate automatisch behandelt werden. Zeige zuerst die einzelnen Fähigkeitensets und anschließend das kombinierte Ergebnis. Ermittle alle sich überschneidenden Fähigkeiten, indem du die Fähigkeiten findest, die in beiden ursprünglichen Sets vorkommen. Wenn es keine sich überschneidenden Fähigkeiten gibt, gib für die Zeile mit den sich überschneidenden Fähigkeiten „None“ aus.

Probier es selbst

import 'dart:io';

void main() {
  // Projektname 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 darunter
  // Verwende die union()-Methode, um beide Fähigkeitensätze zu kombinieren
  // Find overlapping skills between the two sets
  // Calculate total unique skills
  
  // Gib die Ergebnisse im erforderlichen Format aus
  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 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

Übe selbstständig: Online-Dart-Compiler