How to use where and whereType in Dart HashSet:
The where and whereType methods of Dart HashSet are used to get an iterable of elements satisfied by a given function. In this post, we will learn how to use where and whereType with examples.
How to use the where method:
The syntax of the where method is:
where(bool fn(E e)) → Iterable<E>
- It takes one function as its parameter and returns one iterable.
- The function must return a boolean value. If the return value for any element is true, it will add that element to the iterable. Otherwise, it will skip that element.
Let’s take one example to understand how this method works:
import 'dart:collection';
void main() {
final hashSet = HashSet.of([1, 2, 3, 4, 5, 6, 7, 8, 9]);
final evenIterable = hashSet.where((e) => e.isEven);
print('Original HashSet: ${hashSet}');
print('Content of the evenIterable: ');
evenIterable.forEach((e) {
print(e);
});
}
- The hashSet is a HashSet of numbers.
- It uses the where method to find the even numbers of the hashSet and assigns the returned iterable to the evenIterable variable.
- The last two print statements are printing the content of the original HashSet and the content of the iterable.
It will give the below result:
Original HashSet: {1, 2, 3, 4, 5, 6, 7, 8, 9}
Content of the evenIterable:
2
4
6
8
As you can see that the even numbers are picked from the given HashSet.
How to use the whereType method:
The whereType method is used to pick elements of a specific type. For example, if a HashSet contains both string and integer values, we can pick only the string or integer values by using whereType.
The syntax of the whereType method is:
whereType<T>() → Iterable<T>
Where T is the type. It returns one lazy iterable.
The below example program shows how to use the whereType method:
import 'dart:collection';
void main() {
final hashSet = HashSet.of(['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]);
final stringSetIterable = hashSet.whereType<String>();
final integerSetIterable = hashSet.whereType<int>();
print('Original HashSet: ${hashSet}');
print('String values of the HashSet: ${stringSetIterable}');
print('Integer values of the HashSet: ${integerSetIterable}');
}
Here,
- The HashSet holds both string and integer variables.
- We are using the whereType method to filter out string and integer values of the HashSet. The string values are assigned to the stringSetIterable and the integer values are assigned to the integerSetIterable variable.
If you run this program, it will print:
Original HashSet: {e, 1, a, 2, 3, 4, 5, d, c, b}
String values of the HashSet: (e, a, d, c, b)
Integer values of the HashSet: (1, 2, 3, 4, 5)
As you can see, the strings and integer values of the HashSet are picked by the whereType method.
You might also like:
- How to add and remove items from a Queue in Dart
- How to remove and retain items from Queue in Dart with condition
- Dart Queue reduce function example
- Dart HashMap explanation with examples
- How to add and remove items of a HashMap in Dart
- How to iterate a HashMap in Dart in different ways
- HashSet in Dart and its methods and properties
- How to add and remove items from a HashSet in Dart
- Union and intersection of two HashSet in Dart
- Different ways to create a HashSet in Dart
- 3 ways to find if a HashSet is empty or not in Dart
- Dart HashSet.take and HashSet.takeWhile methods