Set Union
Part of the Logic & Flow section of Coddy's Dart journey — lesson 22 of 65.
When you have two separate Set collections, you can combine them into a single set containing all unique elements from both using the union() method. This operation creates a new set that includes every element that appears in either of the original sets.
The union() method automatically handles duplicates for you. If the same element exists in both sets, it will appear only once in the resulting union set, maintaining the fundamental property that sets contain only unique values.
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}Notice how 'JavaScript' appears in both original sets but only once in the union result. This makes union() perfect for combining related collections while ensuring no duplicates, such as merging skill sets, combining user permissions, or consolidating data from multiple sources.
You can also find only the elements that two sets share using the intersection() method. It returns a new set containing only the elements that appear in both sets.
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills); // {JavaScript}To display the elements of a set as a single readable string, use the join() method. You can pass a separator string to place between each element.
Set<String> sharedSkills = {'JavaScript'};
print(sharedSkills.join(', ')); // JavaScript
Set<String> allSkills = {'HTML', 'CSS', 'JavaScript', 'Python', 'SQL'};
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQLChallenge
EasyCreate a program that manages a professional networking system by combining skill sets from different team members to create a comprehensive project skill profile. Your program should:
- Read a string input representing the project name
- Read multiple string inputs representing the first team member's skills (the input will end when you receive
"member1_done") - Read multiple string inputs representing the second team member's skills (the input will end when you receive
"member2_done") - Create two separate Sets to store each team member's skills
- Use the
union()method to combine both skill sets into a comprehensive project skill profile - Print the skill combination results in the exact format shown below
For example, if the project name is "Web Development Project", the first member's skills are "HTML", "CSS", "JavaScript", "React", and the second member's skills are "JavaScript", "Node.js", "MongoDB", "React", your program should output:
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 successfullyIf the project name is "Mobile App Development", the first member's skills are "Dart", "Flutter", "Firebase", and the second member's skills are "Swift", "iOS", "Xcode", your program should output:
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 successfullyIf the project name is "Data Science Project", the first member's skills are "Python", "Pandas", "NumPy", "SQL", and the second member's skills are "Python", "SQL", "Tableau", "Statistics", your program should output:
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 successfullyYour program must use the union() method to combine the two skill sets, demonstrating how it automatically handles duplicates. Show the individual skill sets first, then the combined result. Identify any overlapping skills by finding skills that appear in both original sets. If there are no overlapping skills, display "None" for the overlapping skills line.
Cheat sheet
The union() method combines two sets into a single set containing all unique elements from both sets:
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}The union() method automatically handles duplicates - if the same element exists in both sets, it appears only once in the resulting set.
The intersection() method returns a new set containing only the elements that exist in both sets:
Set<String> commonSkills = frontendSkills.intersection(backendSkills);
print(commonSkills); // {JavaScript}The join() method converts a set into a String by concatenating all elements, with an optional separator:
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQLTry it yourself
import 'dart:io';
void main() {
// Read project name
String? projectName = stdin.readLineSync();
// Read first team member's skills
Set<String> member1Skills = <String>{};
String? skill;
while ((skill = stdin.readLineSync()) != "member1_done") {
if (skill != null) {
member1Skills.add(skill);
}
}
// Read second team member's skills
Set<String> member2Skills = <String>{};
while ((skill = stdin.readLineSync()) != "member2_done") {
if (skill != null) {
member2Skills.add(skill);
}
}
// TODO: Write your code below
// Use the union() method to combine both skill sets
// Find overlapping skills between the two sets
// Calculate total unique skills
// Output the results in the required format
print("Project: $projectName");
print("Team Member 1 skills: $member1Skills");
print("Team Member 2 skills: $member2Skills");
// Print combined skills, total count, overlapping skills, and status
}This lesson includes a short quiz. Start the lesson to answer it and track your progress.
All lessons in Logic & Flow
1Advanced List Manipulation
List Properties: first & lastList State: isEmpty & isNotEmpReversing a ListAdding to a List: insertList Removal: removeWhereFinding in a List: indexOfSorting a ListShuffling a ListRecap - List Organizer4Advanced Map Manipulation
Iterating Over a MapChecking for Keys and ValuesMap Properties: keys & valuesConditional Add: putIfAbsentRemoving Entries from a MapNested MapsRecap - Inventory Update2Functional List Operations
Transforming with 'map'Filtering with 'where'Using '.toList()'Checking Conditions with 'any'Conditions with 'every'Finding with 'firstWhere'Recap - Data Filtering5Project: Shopping Cart Calc
Project SetupAdding Items to the Cart3Sets
What is a Set?Creating a SetAdding and Removing from SetsChecking for Elements in a SetConverting a List to a SetSet UnionSet IntersectionSet DifferenceRecap - Unique Guest List