如何在dart中检查两幅Map是否相等

a14dhokn  于 2023-03-15  发布在  其他
关注(0)|答案(7)|浏览(202)

是否可以检查两个Map是否相等或不像java equals

void main() {
  Map map1 = {'size': 38, 'color': 'red'};
  Map map2 = {'size': 38, 'color': 'red'};

  if(map1== map2){//both keys and values
    print('yes');
  }else{
    print('no');
  }
}
ikfrs5lh

ikfrs5lh1#

我找到了mapEquals

import 'package:flutter/foundation.dart';

void main() {
  Map map1 = {'size': 38, 'color': 'red'};
  Map map2 = {'size': 38, 'color': 'red'};

  if(mapEquals(map1, map2)){
    print('yes');
  }else{
    print('no');
  }
}
jw5wzhpr

jw5wzhpr2#

使用MapEquality().equals(Object a, Object b)。它将返回truefalse

import 'package:collection/equality.dart';

MapEquality().equals(map1, map2)
kx1ctssn

kx1ctssn3#

对于Flutter,如果您有一个嵌套Map,并且您需要检查它与另一个嵌套对象在键和值Map方面是否相等,请使用用途:

import 'package:collection/collection.dart';

if(DeepCollectionEquality().equals(map1, map2)) {
  print('Maps are equal');
} else {
  print('Maps are not equal');
}
ilmyapht

ilmyapht4#

对于非Flutter Dart代码,package:quiver提供mapsEqual函数以比较Map(以及ListSet的类似函数)。

xlpyo6sf

xlpyo6sf5#

这些答案对我都不管用。
我尝试了map1.toString()== map2.toString(),它成功了。

ezykj2lf

ezykj2lf6#

Map v1 = {'name': "ahmed", "age": 24};
    Map v2 = {'name': "ahmed", "age": 24};
    if(v1.toString() == v2.toString())
  print('yes');
    else{
      print('no');
    }
  }
bvhaajcl

bvhaajcl7#

我尝试不使用任何其他依赖项。您可以复制/粘贴以下代码在 dart Playground和测试它。

void main() {
  final map1 = {'a':1, 'b':3};
  final map2 = {'a':1, 'b':3};
  final map3 = {'b':3, 'a':1};
  final map4 = {'b':3, 'a':1, 'c':1};
  bool result = _mapEquals(map1, map2);
  print(result); // true
  result = _mapEquals(map1, map3);
  print(result); // true
  result = _mapEquals(map1, map4);
  print(result); // false
}

bool _mapEquals(Map<String, int> map1, Map<String, int> map2) {
  if (map1.keys.length != map2.keys.length) return false;

  for (String k in map1.keys) {
    if (!map2.containsKey(k)) return false;
    if (map1[k] != map2[k]) return false;
  }

  return true;
}

相关问题