Определите, если 2D-список содержит список в Dart / Flutter - PullRequest
0 голосов
/ 15 мая 2019

Как определить, содержит ли 2D-список другой список, не используя вложенные циклы for?

Я ищу метод, похожий на in в python.Я пытался использовать 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 голосов
/ 15 мая 2019

Проблема с вашим методом в том, что в Dart все (в отличие от Java, включая примитивные типы данных) является объектом, поэтому, когда вы используете оператор equals или содержит, Dart сравнивает их как объекты, а не как абсолютные значения, так что вы получаете false.

Копайте в библиотеку коллекций, может быть, вы найдете лучший метод, но, возможно, так и есть.

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);
    }
  }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...