compare method

  1. @override
int compare(
  1. Map<K, V> left,
  2. Map<K, V> right
)
override

Compares two values.

Implementation

@override
int compare(Map<K, V> left, Map<K, V> right) {
  if (equality.equals(left, right)) {
    return 0;
  }
  final leftEntries = left.entries.toList();
  leftEntries.sort((a, b) {
    return keyKind.compare(a.key, b.key);
  });
  final rightEntries = right.entries.toList();
  rightEntries.sort((a, b) {
    return keyKind.compare(a.key, b.key);
  });
  final minLength = min<int>(leftEntries.length, rightEntries.length);
  for (var i = 0; i < minLength; i++) {
    final a = leftEntries[i];
    final b = rightEntries[i];
    final r = keyKind.compare(a.key, b.key);
    if (r != 0) {
      return r;
    }
    final r2 = valueKind.compare(a.value, b.value);
    if (r2 != 0) {
      return r2;
    }
  }
  return leftEntries.length.compareTo(rightEntries.length);
}