retainWhere method
Removes all elements of this set that fail to satisfy test.
final characters = <String>{'A', 'B', 'C'};
characters.retainWhere(
(element) => element.startsWith('B') || element.startsWith('C'));
print(characters); // {B, C}
Implementation
@override
void retainWhere(bool Function(E element) test) {
final removed = <E>[];
for (var i = _value.length - 1; i >= 0; --i) {
final element = _value.elementAt(i);
if (!test(element)) {
removed.add(element);
}
}
if (removed.isNotEmpty) {
_setPreviousValue(Set<E>.of(_value));
for (final item in removed) {
_value.remove(item);
}
}
}