【发布时间】:2020-04-13 08:30:18
【问题描述】:
我有 3 个列表,例如:
List l1 = [1, 2, 3, 55, 7, 99, 21];
List l2 = [1, 4, 7, 65, 99, 20, 21];
List l3 = [0, 2, 6, 7, 21, 99, 26];
我希望有共同的元素:
// [7,99,21]
这是我尝试过但无法正常工作的方法:
List l1 = [1, 2, 3, 55, 7, 99, 21];
List l2 = [1, 4, 7, 65, 99, 20, 21];
List l3 = [0, 2, 6, 7, 21, 99, 26];
List common = l1;
l2.forEach((element) {
l3.forEach((element2) {
if (!common.contains(element) || !common.contains(element2)) {
common.remove(element);
common.remove(element2);
}
});
});
print(common);
另外,列表的数量是动态的,所以我希望像这样嵌套它们,我没有递归经验,所以我不能这样做,甚至不知道它是否比嵌套循环更好。
感谢您的帮助。
【问题讨论】:
-
Set s1 = Set.from(l1); Set s2 = Set.from(l2); Set s3 = Set.from(l3); print(s1.intersection(s2).intersection(s3)); -
或者更简单的一行代码:
print([l1, l2, l3].map((l) => Set.from(l)).reduce((v, e) => v.intersection(e)));