@@ -325,11 +325,15 @@ class MapEquality<K, V> implements Equality<Map<K, V>> {
325325 var length = map1.length;
326326 if (length != map2.length) return false ;
327327 Map <_MapEntry , int > equalElementCounts = HashMap ();
328- for (var MapEntry (: key, : value) in map1.entries) {
328+ var values1 = map1.values.iterator;
329+ for (var key in map1.keys) {
330+ var value = (values1..moveNext ()).current;
329331 var entry = _MapEntry (this , key, value);
330332 equalElementCounts.update (entry, (i) => i + 1 , ifAbsent: () => 1 );
331333 }
332- for (var MapEntry (: key, : value) in map2.entries) {
334+ final values2 = map2.values.iterator;
335+ for (var key in map2.keys) {
336+ var value = (values2..moveNext ()).current;
333337 var entry = _MapEntry (this , key, value);
334338 var count =
335339 equalElementCounts.update (entry, (i) => i - 1 , ifAbsent: () => - 1 );
@@ -342,7 +346,9 @@ class MapEquality<K, V> implements Equality<Map<K, V>> {
342346 int hash (Map <K , V >? map) {
343347 if (map == null ) return null .hashCode;
344348 var hash = 0 ;
345- for (var MapEntry (: key, : value) in map.entries) {
349+ var values = map.values.iterator;
350+ for (var key in map.keys) {
351+ var value = (values..moveNext ()).current;
346352 var keyHash = _keyEquality.hash (key);
347353 var valueHash = _valueEquality.hash (value);
348354 hash = (hash + 3 * keyHash + 7 * valueHash) & _hashMask;
0 commit comments