我有两个列表[1,2,3,4,5,6,7]
和[3,5,6,7,9,10]
. 我想得到第一个列表和第二个列表的差异。
预期的输出是[1,2,4]
因为这些是仅列表 1 而不是列表 2 中的唯一元素。
我正在使用 Flutter 和 Dart。我在互联网上查了一下,我知道这似乎是一个简单的问题,但我找不到任何东西。
应该无关紧要,但我正在使用 iOS 发布
我更喜欢没有 foreach 循环的答案,我想看看是否有一个库。
Pjo*_*lin 13
由于您将寻找独特的元素,您可以使用 Set 类(https://api.flutter.dev/flutter/dart-core/Set/difference.html)的差异方法来执行以下操作:
List<int> first = [1,2,3,4,5,6,7];
List<int> second = [3,5,6,7,9,10];
List<int> difference = first.toSet().difference(second.toSet()).toList();
print(difference.toString());
// prints [1, 2, 4]
Run Code Online (Sandbox Code Playgroud)
Kar*_*mry 12
你可以这样做:
List<double> first = [1,2,3,4,5,6,7];
List<double> second = [3,5,6,7,9,10];
List<double> output = [];
first.forEach((element) {
if(!second.contains(element)){
output.add(element);
}
});
//at this point, output list should have the answer
Run Code Online (Sandbox Code Playgroud)
替代答案:
List<double> first = [1,2,3,4,5,6,7];
List<double> second = [3,5,6,7,9,10];
List<double> output = first.where((element) => !second.contains(element));
Run Code Online (Sandbox Code Playgroud)
请注意,对于这两种情况,您都需要遍历较大的 list。
简单且推荐的方法是
var a = [1,2,3,4,5];
var b = [1,2];
a.removeWhere((element) => b.contains(element));
print(a); //[3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6387 次 |
最近记录: |