识别2D列表是否包含Dart / Flutter中的列表

时间:2019-05-15 13:55:49

标签: android list dart flutter

如何在不使用嵌套for循环的情况下确定2D列表是否包含另一个列表?

我正在寻找一种类似于python中的in的方法。我尝试使用list.contains(x),但似乎无法识别列表:

List a = [[1,2],[1,1],[2,2]];
List b = [1,2];
int c = 1;

b.contains(c)    // returns true
a.contains(b)    // returns false

1 个答案:

答案 0 :(得分:0)

您的方法存在的问题是,在Dart中,所有东西(不同于Java,包括原始数据类型)都是对象,因此,当您使用equals运算符或包含时,Dart会将它们作为对象而不是绝对值进行比较,因此您得到的是假。

深入研究馆藏图书馆,也许您可​​以找到更好的方法,但也许是这样。

import 'package:collection/collection.dart';

main() async {
  Function equals = const ListEquality().equals;
  List a = [
    [1, 2],
    [1, 1],
    [2, 2]
  ];
  List b = [1, 2];
  int c = 1;

  print(b.contains(c));
  print(a.contains(b));

  bool contains = false;
  for (List list in a) {
    if (equals(list, b)) {
      contains = true;
      print(contains);
    }
  }
}