Dart 如何检查列表中是否存在子列表?

Dart 如何检查列表中是否存在子列表?,dart,Dart,如何检查一个列表是否包含另一个列表。包含仅允许单个值 import 'dart:io'; void main() { List<int> mylist_1 = [1,3,5,2,7,8]; List<int> mylist_2 = [1,3,2]; } 导入'dart:io'; void main(){ 列出mylist_1=[1,3,5,2,7,8]; 列表mylist_2=[1,3,2]; } 我需要检查mylist_1是否有mylist_2。 列表中元素

如何检查一个列表是否包含另一个列表<代码>。包含仅允许单个值

import 'dart:io';
void main() {
  List<int> mylist_1 = [1,3,5,2,7,8];
  List<int> mylist_2 = [1,3,2];
}
导入'dart:io';
void main(){
列出mylist_1=[1,3,5,2,7,8];
列表mylist_2=[1,3,2];
}
我需要检查
mylist_1
是否有
mylist_2
。 列表中元素的任意顺序。

可能的解决方案(如果复制控件不重要):

结果:

true
[1, 3, 5, 2, 7, 8, 2]
[1, 3, 2]
true
[1, 3, 5, 2, 7, 8, 2]
[1, 3, 2, 2]
true
[1, 3, 5, 2, 7, 8, 2]
[1, 3, 2, 2, 2]
false
更精确的检查:

import 'package:enumerable/enumerable.dart';

void main() {
  final mylist_1 = [1, 3, 5, 2, 7, 8, 2];
  var mylist_2 = [1, 3, 2];
  _check(mylist_1, mylist_2);

  mylist_2 = [1, 3, 2, 2];
  _check(mylist_1, mylist_2);

  mylist_2 = [1, 3, 2, 2, 2];
  _check(mylist_1, mylist_2);
}

void _check<T>(List<T> mylist_1, List<T> mylist_2) {
  final x1 = mylist_1.groupBy((e) => e).toMap((e) => e.key);
  final x2 = mylist_2.groupBy((e) => e);
  final result = x2
          .takeWhile$1((e) => x1[e.key] != null && x1[e.key].length >= e.length)
          .length ==
      x2.length;

  print(mylist_1);
  print(mylist_2);
  print(result);
}

如果您不关心检查重复项,可以通过将第一个
列表
转换为
集合
,然后对第二个
列表调用
containsAll
来实现:

bool listContainsAll(列表a、列表b){
最终设定a=一组(a);
返回集合A.containsAll(b);
}

您指的是列表还是按精确顺序排列的列表元素?这里的答案应该是正确的还是错误的?也就是说,必须
mylist_1
包含
[1,3,2]
作为子列表(没有,途中有
5
),或者必须
mylist_1
按顺序包含
[1,3,2]
的元素?或者以任何顺序?
[1, 3, 5, 2, 7, 8, 2]
[1, 3, 2]
true
[1, 3, 5, 2, 7, 8, 2]
[1, 3, 2, 2]
true
[1, 3, 5, 2, 7, 8, 2]
[1, 3, 2, 2, 2]
false