Set-Vereinigung
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 22 von 65.
Wenn Sie zwei separate Set-Kollektionen haben, können Sie diese mithilfe der union()-Methode 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 einem der ursprünglichen Sets vorkommt.
Die union()-Methode verarbeitet Duplikate automatisch für Sie. Wenn dasselbe Element in beiden Mengen vorhanden ist, erscheint es in der resultierenden Vereinigungsmenge nur einmal, wodurch die grundlegende Eigenschaft gewahrt 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}Beachten Sie, wie 'JavaScript' in beiden ursprünglichen Mengen erscheint, 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.
Sie können auch nur die Elemente finden, die zwei Sets gemeinsam haben, indem Sie die Methode intersection() verwenden. Sie gibt ein neues Set zurück, das nur die Elemente enthält, die in beiden Sets vorkommen.
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills); // {JavaScript}Um die Elemente eines Sets als einen einzelnen lesbaren String anzuzeigen, verwenden Sie die Methode join(). Sie können einen Trennzeichen-String übergeben, der zwischen den einzelnen Elementen eingefügt wird.
Set<String> sharedSkills = {'JavaScript'};
print(sharedSkills.join(', ')); // JavaScript
Set<String> allSkills = {'HTML', 'CSS', 'JavaScript', 'Python', 'SQL'};
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQLAufgabe
EinfachErstellen 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:
- Eine String-Eingabe einlesen, die den Projektnamen darstellt
- Mehrere String-Eingaben einlesen, die die Fähigkeiten des ersten Teammitglieds darstellen (die Eingabe endet, wenn Sie
"member1_done"erhalten) - Mehrere String-Eingaben einlesen, die die Fähigkeiten des zweiten Teammitglieds darstellen (die Eingabe endet, wenn Sie
"member2_done"erhalten) - Zwei separate Sets erstellen, um die Fähigkeiten jedes Teammitglieds zu speichern
- Verwenden Sie die Methode
union(), um beide Skill-Sets zu einem umfassenden Projekt-Skill-Profil zu kombinieren - Geben Sie die Ergebnisse der Skill-Kombination in dem unten gezeigten exakten Format aus
Wenn der Projektname zum Beispiel "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 successfullyWenn 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 successfullyWenn 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 successfullyIhr 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.
Spickzettel
Die Methode union() kombiniert zwei Sets zu einem einzigen Set, das alle eindeutigen Elemente aus beiden Sets enthält:
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}Die Methode union() behandelt Duplikate automatisch – wenn dasselbe Element in beiden Sets vorhanden ist, erscheint es im resultierenden Set nur einmal.
Die Methode intersection() gibt ein neues Set zurück, das nur die Elemente enthält, die in beiden Sets vorhanden sind:
Set<String> commonSkills = frontendSkills.intersection(backendSkills);
print(commonSkills); // {JavaScript}Die Methode join() konvertiert ein Set in einen String, indem sie alle Elemente mit einem optionalen Trennzeichen verkettet:
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQLProbier 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: Schreiben Sie Ihren Code unten
// Verwenden Sie die union()-Methode, um beide Skill-Sets zu kombinieren
// Finden Sie überschneidende Fähigkeiten zwischen den beiden Sets
// Berechnen Sie die Gesamtzahl der einzigartigen Fähigkeiten
// Ergebnisse im erforderlichen Format ausgeben
print("Project: $projectName");
print("Team Member 1 skills: $member1Skills");
print("Team Member 2 skills: $member2Skills");
// Kombinierte Fähigkeiten, Gesamtzahl, überschneidende Fähigkeiten und Status ausgeben
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Listenmanipulation
Listen-Eigenschaften: first & lastListen-Status: isEmpty & isNotEmptyEine Liste umkehrenHinzufügen zu einer Liste: insertElemente aus Liste entfernen: removeWhereSuchen in einer Liste: indexOfEine Liste sortierenEine Liste mischenZusammenfassung – Listen-Organizer4Fortgeschrittene Map-Manipulation
Über eine Map iterierenPrüfen auf Schlüssel und WerteMap-Eigenschaften: keys & valuesBedingtes Hinzufügen: putIfAbsentEinträge aus einer Map entfernenVerschachtelte MapsRückblick – Inventar-Update7Fortgeschrittene Funktionen
Anonyme FunktionenFunktionen als Argumente übergebenClosures verstehenEinführung in die RekursionRekursive Funktion: CountdownRekursive Funktion: FakultätZusammenfassung – List Processor10Abschluss-Herausforderungen
Herausforderung: NotensortiererHerausforderung: VokalzählerHerausforderung: FizzBuzz2Funktionale Listenoperationen
Transformieren mit 'map'Filtern mit 'where''.toList()' verwendenBedingungen prüfen mit 'any'Bedingungen mit 'every'Suchen mit 'firstWhere'Zusammenfassung – Datenfilterung3Sets
Was ist ein Set?Ein Set erstellenHinzufügen und Entfernen in SetsPrüfen auf Elemente in einem SetEine Liste in ein Set umwandelnSet-VereinigungSet-SchnittmengeSet-DifferenzRückblick – Einzigartige Gästeliste