【Dart/Flutter】コレクションの比較

はじめに

Dartのコレクション(List, Set, Map)の比較方法を記載します。

共通

import 'package:collection/collection.dart';

リスト(配列)の比較

順序を考慮する書き方(ListEquality())と考慮しない書き方(DeepCollectionEquality.unordered())がある。

final list1 = [1, 2, 3];
final list2 = [1, 2, 3];
final list3 = [1, 3, 2];

expect(ListEquality().equals(list1, list2), true);
expect(ListEquality().equals(list1, list3), false);

expect(DeepCollectionEquality().equals(list1, list2), true);
expect(DeepCollectionEquality().equals(list1, list3), false);

expect(DeepCollectionEquality.unordered().equals(list1, list2), true);
expect(DeepCollectionEquality.unordered().equals(list1, list3), true);

セット(集合)の比較

final set1 = {1, 2, 3};
final set2 = {2, 3, 1};
final set3 = {1, 2, 3, 4};

expect(SetEquality().equals(set1, set2), true);
expect(SetEquality().equals(set1, set3), false);

Map(辞書)の比較

final map1 = {1: 1, 2: 2};
final map2 = {2: 2, 1: 1};
final map3 = {1: 1, 3: 3};

expect(MapEquality().equals(map1, map2), true);
expect(MapEquality().equals(map1, map3), false);