containsValue 方法

bool containsValue(
  1. Object? value
)
override

判断此映射是否包含指定的 value

如果映射中的任意值与 value 在根据 == 操作符相等时,返回 true。

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

实现

bool containsValue(Object? value) {
  int initialSplayCount = _splayCount;
  bool visit(_SplayTreeMapNode<K, V>? node) {
    while (node != null) {
      if (node.value == value) return true;
      if (initialSplayCount != _splayCount) {
        throw ConcurrentModificationError(this);
      }
      if (node._right != null && visit(node._right)) {
        return true;
      }
      node = node._left;
    }
    return false;
  }

  return visit(_root);
}