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

按Key映射两个Dart对象列表,为CustomClass匹配对应Value

按Key映射两个Dart列表生成新列表

要实现将listCustomClass中每个CustomClass实例的value字段,从listKeyValue里匹配相同key的KeyValue对象取值,最优方式是先把listKeyValue转为Map提升查找效率,再遍历生成新列表:

实现代码

// 1. 将listKeyValue转换为key-value映射的Map
final keyValueMap = {
  for (var kv in listKeyValue) kv.key: kv.value
};

// 2. 生成新的CustomClass列表
final newListCustomClass = [
  for (var item in listCustomClass)
    CustomClass(
      key: item.key,
      name: item.name,
      value: keyValueMap[item.key], // 从Map中匹配对应key的value
    )
];

代码说明

  • 用集合字面量把listKeyValue转为Map<String, String>,后续查找对应key的value时时间复杂度为O(1),比每次遍历列表查找的O(n)更高效,数据量大时优势更明显。
  • 遍历listCustomClass,为每个元素创建新的CustomClass实例,复用原有key和name,value从Map中获取;若没有匹配的key,value会保持null,符合原类的可选字段定义。

验证结果

运行代码后,newListCustomClass结构与预期完全一致:

[
  CustomClass(key: "1234", name: "name1", value: "someValue1"),
  CustomClass(key: "1234", name: "name2", value: "someValue1"),
  CustomClass(key: "12345", name: "name3", value: "someValue2"),
  CustomClass(key: "12345678", name: "name4", value: "someValue3"),
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:24:12