我正在比较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

Dart相关问答推荐

dart 日期时差(分钟)

观察对象的状态

Dart 可空记录与模式匹配:(String, int)?类型的匹配值无法分配给所需类型(Object?, Object?)

构造函数:将预处理的参数存储在传递给最终字段的辅助变量中

Flutter|Dart 创建匿名类

Dart 捕获 http 异常

flutter命令运行失败

如何根据用户在Flitter中的时间显示问候,如早上好、下午好或晚上好

如何在 Flutter 中为 PopupMenu 添加圆角边框?

你如何在 Dart 中将月份的日期格式化为11th、21st或23rd?

如何循环遍历元素列表

如何从 JavaScript 调用 Dart 函数

如何缩小从 Dart 编辑器编译的 JavaScript 代码?

Error: The argument type "String?"can't be assigned to the parameter type"String" because "String?"s nullable and "String"isn't

如何将条目添加到列表中的特定索引?

Dart MD5 字符串

如何在 Dart 中为 Completer.CompleteException(exception, stackTrace) 获取当前堆栈跟踪;

有没有办法在 Dart 中通过引用传递原始参数?

如何在 Dart 中进行整数除法?

了解工厂构造函数代码示例