removeWhere method

  1. @override
void removeWhere(
  1. bool test(
    1. K key,
    2. V value
    )
)
override

Removes all entries of this map that satisfy the given test.

final terrestrial = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
terrestrial.removeWhere((key, value) => value.startsWith('E'));
print(terrestrial); // {1: Mercury, 2: Venus}

Implementation

@override
void removeWhere(bool Function(K key, V value) test) {
  var del = <_EntryRef<K, V>>[];

  for (var k in _map.keys) {
    var target = k.target;
    if (target == null) {
      del.add(k);
    } else {
      var payload = k.payload;
      if (payload == null || test(target, payload)) {
        del.add(k);
      }
    }
  }

  for (var k in del) {
    _map.remove(k);
    _onRemoveEntry(k);
  }
}