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

Flutter如何对比两个列表 找出第二个列表中第一个列表缺失的元素

Flutter/Dart 列表差集实现方法

要获取存在于animalsTwo、但animalsOne中缺失的元素,直接用Dart内置的集合操作即可实现,针对你给出的示例代码,有两种常用实现方案:

方案1:Set差集法(推荐,性能更好)

Dart的Set结构自带差集计算API,先将两个列表转为Set,调用difference方法就能直接得到目标结果,写法简洁、大数据量下性能更优:

List animalsOne = ['Lion','Zebra','tiger','Chimpanzee','Rabbit'];
List animalsTwo = ['Lion', 'Girrafe', 'tiger', 'Dog', 'Chimpanzee','Rabbit'];

// 计算差集:存在于animalsTwo的Set、但不在animalsOne的Set中的元素
Set resultSet = animalsTwo.toSet().difference(animalsOne.toSet());
List result = resultSet.toList();

print(result); // 输出 [Girrafe, Dog],完全匹配预期结果

注意:该方案会自动对结果去重,如果animalsTwo里有重复的缺失元素,最终结果只会保留一个。

方案2:遍历筛选法(支持保留重复元素)

如果你需要保留animalsTwo中缺失元素的重复项,可以用where方法遍历筛选,判断每个元素是否不存在于animalsOne中:

List animalsOne = ['Lion','Zebra','tiger','Chimpanzee','Rabbit'];
List animalsTwo = ['Lion', 'Girrafe', 'tiger', 'Dog', 'Chimpanzee','Rabbit'];

List result = animalsTwo.where((item) => !animalsOne.contains(item)).toList();

print(result); // 输出 [Girrafe, Dog]

注意:该方案因为每次判断都要遍历animalsOne做contains匹配,在两个列表数据量都很大的场景下性能弱于Set差集法。

方案选型参考

  • 普通业务场景、不需要保留重复差集元素:优先选Set差集法
  • 需要保留重复的差集元素、列表数据量较小:选遍历筛选法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:09:24