リストを順序に関係なく、要素が同じかどうかで比較する方法を解説します。
方法

順番に関係なく、要素だけ比較するには、「DeepCollectionEqualityクラス」を使います。
このクラスは、リストやセットなどのコレクションを細かく比較するためのクラスです。
実際にこのクラスを使って、順不同で比較するには、次のようにします。
- collectionパッケージのインポート
- 「DeepCollection.unordered().equals」でインスタンスを生成
- 生成したインスタンスに比較するリストを指定
まず、collectionパッケージをインポートします。
import 'package:collection/collection.dart';
次に、「DeepCollection.unordered().equals」でインスタンスを生成します。
var deepEq = DeepCollectionEquality.unordered().equals;
インスタンスは、変数に格納しておきます。
そして、作ったインスタンスに、比較したいリストを指定します。
var deepEq = DeepCollectionEquality.unordered().equals;
var list1 = <int>[1, 2, 3];
var list2 = <int>[3, 2, 1];
print(deepEq(list1, list2));

このように、順番が違っても要素が同じであれば「true」となる比較ができるようになります。
まとめ
順番に関係なく、要素だけ比較するには、「DeepCollectionEqualityクラス」を使います。
具体的には、「DeepCollection.unordered().equals」で作ったインスタンスに、引数として比較するリストを指定します。
参考
Attention Required! | Cloudflare
コメント