blob: 14f074c637c1f55cca0959ea43b283307f469be4 [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:collection';
import 'equality.dart';
import 'wrappers.dart';
/// A [Map] whose key equality is determined by an [Equality] object.
class EqualityMap<K, V> extends DelegatingMap<K, V> {
/// Creates a map with equality based on [equality].
EqualityMap(Equality<K> equality)
: super(new LinkedHashMap(
equals: equality.equals,
hashCode: equality.hash,
isValidKey: equality.isValidKey));
/// Creates a map with equality based on [equality] that contains all
/// key-value pairs of [other].
///
/// If [other] has multiple keys that are equivalent according to [equality],
/// the last one reached during iteration takes precedence.
EqualityMap.from(Equality<K> equality, Map<K, V> other)
: super(new LinkedHashMap(
equals: equality.equals,
hashCode: equality.hash,
isValidKey: equality.isValidKey)) {
addAll(other);
}
}