所以我正在Flutter上开发一个应用程序,长话短说:我有2个“过滤器选项”,可创建2个单独的列表。现在我要使用的是这两个列表,找到两个列表中都存在的项目,然后将该项目添加到第三个列表中。
示例:
列表
List
结果:[1、2]
我知道我可能会遍历1个列表,然后用'contains()'检查该项目是否在另一个列表中。但这可能是1个(或两个)列表为空,然后我的第三个列表将为空,因为我永远不会循环将重复项添加到第三个列表中
答案 0 :(得分:1)
您需要的是两个集合之间的交集。最有可能的是,不使用列表,而是使用项目集。
我会这样解决:
void main() {
List<int> first_list = [1, 2, 3, 4, 5];
List<int> second_list = [1, 2, 8, 9];
final shared = first_list.toSet().intersection(second_list.toSet());
print(shared);
}
如果您可以使用集合而不是列表,它将更加简单:
void main() {
Set<int> first_list = {1, 2, 3, 4, 5};
Set<int> second_list = {1, 2, 8, 9};
final shared = first_list.intersection(second_list);
print(shared);
}
答案 1 :(得分:0)
像这样吗?
void main() {
List<int> first_list = [1, 2, 3, 4, 5];
List<int> second_list = [1, 2, 8, 9];
final shared = [...first_list.where(second_list.contains)];
print(shared); // [1, 2]
}