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