containsValue method

  1. @override
bool containsValue(
  1. Object? value
)
override

Whether this map contains the given value.

Returns true if any of the values in the map are equal to value according to the == operator.

final moonCount = <String, int>{'Mercury': 0, 'Venus': 0, 'Earth': 1,
  'Mars': 2, 'Jupiter': 79, 'Saturn': 82, 'Uranus': 27, 'Neptune': 14};
final moons3 = moonCount.containsValue(3); // false
final moons82 = moonCount.containsValue(82); // true

Implementation

@override
bool containsValue(Object? value) {
  List<_EntryRef<K, V>>? del;
  bool found = false;

  for (var k in _map.keys) {
    var target = k.target;
    if (target == null) {
      del ??= <_EntryRef<K, V>>[];
      del.add(k);
    } else {
      if (k.payload == value) {
        found = true;
        break;
      }
    }
  }

  if (del != null) {
    for (var e in del) {
      _map.remove(e);
      _onRemoveEntry(e);
    }
    _unpurgedCount = 0;
  }

  return found;
}