retainAll method

*<Null safety>*
  • @override

void retainAll (Iterable<Object?> elements) override

Implementation

@override
void retainAll(Iterable<Object?> elements) {
  var valuesToRetain = Set<V>.identity();
  for (var element in elements) {
    if (element is! V) continue;
    var key = _keyForValue(element);

    if (!_baseMap.containsKey(key)) continue;
    valuesToRetain.add(_baseMap[key] ?? null as V);
  }

  var keysToRemove = [];
  _baseMap.forEach((k, v) {
    if (!valuesToRetain.contains(v)) keysToRemove.add(k);
  });
  keysToRemove.forEach(_baseMap.remove);
}