我正在比较DART中的两个列表,如下所示:
main() {
if ([1,2,3] == [1,2,3]) {
print("Equal");
} else {
print("Not equal");
}
}
但它们从来就不是平等的.在DART API中似乎没有一个equence()方法来比较列表或集合.有没有合适的方法来做这件事?
我正在比较DART中的两个列表,如下所示:
main() {
if ([1,2,3] == [1,2,3]) {
print("Equal");
} else {
print("Not equal");
}
}
但它们从来就不是平等的.在DART API中似乎没有一个equence()方法来比较列表或集合.有没有合适的方法来做这件事?
要完成Gunter的回答,建议使用以下软件包中的equality类来比较列表中的等式(而不是标识)
import 'package:collection/collection.dart';
Edit:1.13之前为import‘Package:Collection/equality.dart’;
例如:
Function eq = const ListEquality().equals;
print(eq([1,'two',3], [1,'two',3])); // => true
上面打印了true
,因为对应的列表元素是identical()
.如果要(深入)比较可能包含其他集合的列表,请改用:
Function deepEq = const DeepCollectionEquality().equals;
List list1 = [1, ['a',[]], 3];
List list2 = [1, ['a',[]], 3];
print( eq(list1, list2)); // => false
print(deepEq(list1, list2)); // => true
还有其他平等类可以用多种方式组合,包括Map
秒的平等.您甚至可以对集合执行unordered(深度)比较:
Function unOrdDeepEq = const DeepCollectionEquality.unordered().equals;
List list3 = [3, [[],'a'], 1];
print(unOrdDeepEq(list2, list3)); // => true
有关详细信息,请参阅package API documentation.像往常一样,要使用这样的软件包,您必须将其列在您的pubspec.yaml
中:
dependencies:
collection: any