我有两个清单:
List fruits = ['apples', 'bananas'];
List foods = ['apples', 'bananas'];
Run Code Online (Sandbox Code Playgroud)
如何比较水果和食物,并确保两个列表具有相同顺序的相同对象?
比较列表的相等性(而不是同一性)的推荐方法是使用以下包中的 Equality 类
import 'package:collection/equality.dart';
Run Code Online (Sandbox Code Playgroud)
例如,
Function eq = const ListEquality().equals;
print(eq(fruits, foods)); // => true
Run Code Online (Sandbox Code Playgroud)
这适用于您的情况,因为fruits
和foods
包含相应的参数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
Run Code Online (Sandbox Code Playgroud)
还有其他 Equality 类可以通过多种方式组合,包括Map
s 的相等性。您甚至可以对集合执行无序(深度)比较:
Function deepEq = const DeepCollectionEquality.unordered().equals;
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅包 API 文档。像往常一样,要使用这样的包,您必须在您的pubspec.yaml
:
dependencies:
collection: any
Run Code Online (Sandbox Code Playgroud)