You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找两个List<int>列表的差异,获取差集元素

以下是Dart语言场景下的几种实现方案:

  • 方案1:基础写法(适用于小体量列表)
    直接遍历list2筛选不在list1中的元素即可,写法最简单直观:
List<int> list1 = [1,2,3,4,5];
List<int> list2 = [1,2,3,4,5,6,7];

List<int> onlyInList2 = list2.where((element) => !list1.contains(element)).toList();
// 最终输出 [6,7]
  • 方案2:高效写法(适用于大体量列表)
    如果list1元素较多,可先将list1转为Set降低查找成本,Set的contains操作时间复杂度为O(1),比List的O(n)效率高很多:
List<int> list1 = [1,2,3,4,5];
List<int> list2 = [1,2,3,4,5,6,7];

final set1 = Set.from(list1);
List<int> onlyInList2 = list2.where((element) => !set1.contains(element)).toList();
  • 方案3:Set差集写法(Dart 2.15+支持)
    如果不需要保留list2中的重复元素,可直接调用Set自带的difference方法快速计算差集:
List<int> list1 = [1,2,3,4,5];
List<int> list2 = [1,2,3,4,5,6,7];

final diffSet = Set.from(list2).difference(Set.from(list1));
List<int> onlyInList2 = diffSet.toList();

注意:该方案会自动去重,若list2存在多个相同的目标元素(如[6,6,7]),最终结果只会保留一个6,有保留重复元素需求请选用方案2。

内容的提问来源于stack exchange,提问作者rozerro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:06:04