如何像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');
}
}
如何像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');
}
}
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');
}
}
mapEquals
函数是 Flutter 中 'package:flutter/foundation.dart' 包中的一个实用函数。它用于比较两个映射是否相等。如果这两个映射具有相同的键,并且它们对应的值也相等,则此函数返回 true;否则,返回 false。
在给定的代码片段中,有两个映射:map1
和 map2
。这两个映射都具有相同的键('size'和'color'),并且它们对应的值(38和'red')也相等。
调用mapEquals(map1, map2)
函数来比较这些映射。由于这两个映射相等,因此该函数返回true,并将“yes”打印为输出。如果这两个映射不相等,就会打印“no”。
对于Flutter,如果您有一个嵌套的Map,并且需要以键值映射的方式检查其与另一个嵌套对象的相等性,请使用:
对于Flutter中的嵌套Map,如需按键和值映射检查其与另一个嵌套对象的相等性,请使用:
import 'package:collection/collection.dart';
if(DeepCollectionEquality().equals(map1, map2)) {
print('Maps are equal');
} else {
print('Maps are not equal');
}
使用 MapEquality().equals(Object a, Object b)
。它会返回true
或false
。
import 'package:collection/equality.dart';
MapEquality().equals(map1, map2)
DeepCollectionEquality
会。 - RustamGdart
(而不是flutter
),所以我会针对你提出的问题给出一个更一般性的答案。 - jamesdlin这些答案都没有对我起作用。
我尝试过使用 map1.toString() == map2.toString(),它起作用了。
.toString()
表示的映射。 - jamesdlin Map v1 = {'name': "ahmed", "age": 24};
Map v2 = {'name': "ahmed", "age": 24};
if(v1.toString() == v2.toString())
print('yes');
else{
print('no');
}
}
我尝试不使用任何其他依赖项。您可以将以下代码复制/粘贴到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;
}