飞镖:2个列表,显示列表a中不在列表b中的元素

时间:2019-10-31 14:42:42

标签: flutter dart

我正在尝试比较2个列表。 (飞镖(颤振))

List a = [1,2,3,4]
List b = [2,3]

我想找到列表b中没有的列表a元素。 结果:

List c = [1,4]

我应该使用哪种方法?从学校的数学中,我知道您可以使用交集找到公用元素,但是不知道此“方法”的名称。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您使用集合而不是列表,这会容易得多:Set.difference方法完全可以做到这一点。

或者,如果希望输出为列表(以维持列表a的顺序),最有效的方法仍然是将列表b中的元素存储在一组中,然后使用Set.contains方法,在列表a上循环,以根据列表c中未包含的元素建立列表b

答案 1 :(得分:1)

使用静态扩展方法的解决方案。

import 'package:enumerable/enumerable.dart';

void main(List<String> args) {
  final a = [1, 2, 3, 4];
  final b = [2, 3];
  final q = a.except(b);
  print(q.toList());
}

结果:

[1, 4]