Sets
Working with sets in Dart is quite simple and similar to working with lists, but with some key differences. A set is an unordered collection of unique items, which means it automatically removes duplicates.
Creating a Set
We can create a set using the Set constructor or a set literal.
// Using Set constructor
Set<int> numbers = Set<int>();
// Using set literal
Set<String> fruits = {'Apple', 'Banana', 'Cherry'};
Adding Elements to a Set
We can add elements to a set using the add and addAll methods.
fruits.add('Date');
fruits.addAll({'Elderberry', 'Fig'});
Accessing Elements
Since sets are unordered collections, we cannot access elements by their index. We can use methods like contains, forEach, and other collection methods to interact with the set.
bool hasBanana = fruits.contains('Banana'); // Check if 'Banana' is in the set
Removing Elements
We can remove elements from a set using the remove, removeAll, and clear methods.
fruits.remove('Banana'); // Removes 'Banana'
fruits.removeAll({'Date', 'Fig'}); // Removes 'Date' and 'Fig'
fruits.clear(); // Removes all elements from the set
Iterating Over a Set
We can iterate over a set using a forEach, for-in loop, or any other collection method.
// Using for-in loop
for (String fruit in fruits) {
print(fruit);
}
// Using forEach
fruits.forEach((fruit) => print(fruit));
Other Useful Methods
Dart sets come with a variety of other useful methods, such as union, intersection, difference, and lookup.
Set<int> evens = {2, 4, 6, 8};
Set<int> odds = {1, 3, 5, 7};
Set<int> allNumbers = evens.union(odds); // Combines both sets
Set<int> intersection = evens.intersection({4, 5, 6}); // Finds common elements
Set<int> difference = evens.difference({4, 5, 6}); // Finds elements in evens but not in the other set
bool containsElement = evens.lookup(4) != null; // Checks if the set contains a specific element
Example
Here’s a small example demonstrating how to use sets in Dart:
void main() {
Set<String> fruits = {'Apple', 'Banana', 'Cherry'};
fruits.add('Date');
fruits.add('Banana'); // Will not be added again since sets contain unique elements
print(fruits); // Output: {Apple, Banana, Cherry, Date}
fruits.remove('Cherry');
print(fruits); // Output: {Apple, Banana, Date}
for (String fruit in fruits) {
print(fruit);
}
// Using set operations
Set<int> evens = {2, 4, 6, 8};
Set<int> odds = {1, 3, 5, 7};
Set<int> allNumbers = evens.union(odds); // Union of evens and odds
print(allNumbers); // Output: {1, 2, 3, 4, 5, 6, 7, 8}
}
This should give us a solid foundation to start working with sets in Dart.