2相同的内容数组在Dart中不相等?

2相同的内容数组在Dart中不相等?,dart,Dart,我有个问题。 使用Dart时,我无法检查两个阵列是否相等。 (在其他语言中,我可以使用==) 事实上,我可以用字符串或数字来表示==的值 列表arr1=[1,2,3]; 列表arr2=[1,2,3]; 如果(arr1==arr2){ 印刷品(“同等”); }否则{ 打印(“不相等”); } //输出:不相等 所以我想知道这有什么意义。我的意思是,如果==只适用于字符串或数字的情况(如果比较的值相同),我们该怎么办。 如果我想检查列表、地图等的比较(相等),我该怎么做。。 它只适用于字符串和数字

我有个问题。 使用Dart时,我无法检查两个阵列是否相等。 (在其他语言中,我可以使用==) 事实上,我可以用字符串或数字来表示==的值

列表arr1=[1,2,3];
列表arr2=[1,2,3];
如果(arr1==arr2){
印刷品(“同等”);
}否则{
打印(“不相等”);
}
//输出:不相等

所以我想知道这有什么意义。我的意思是,如果==只适用于字符串或数字的情况(如果比较的值相同),我们该怎么办。 如果我想检查列表、地图等的比较(相等),我该怎么做。。
它只适用于字符串和数字。

arr1
arr2
是类型为
List
的对象的不同实例。默认情况下,不同的实例总是不同的。
当类实现自定义的
=
运算符时,它可以重写此行为。默认情况下,某些类具有自定义实现,如
int
String

这可以很容易地为不可变对象而不是可变对象完成。一个原因是,
hashCode
通常是根据类中所选的值来计算的,并且实例的
hashCode
不能更改,因为这可能导致存储在映射中的实例在键的hashCode更改时无法再检索

作为一种解决方法,有一个库提供了帮助函数来比较列表/可编辑项

import'package:collection/equality.dart';
void main(列表参数){
if(const iterableQuality().等于([1,2,3],[1,2,3])){
//if(const SetEquality().equals([1,2,3].toSet(),[1,2,3].toSet()){
印刷品(“同等”);
}否则{
打印(“不相等”);
}
}
请参见