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

Flutter:按共同字符串值合并Group对象列表

合并相同日期的Group对象解决方案

可以通过以下Dart代码实现相同dateFormatted的Group对象合并:

List<Group> mergeGroups(List<Group> groups) {
  // 以日期为键,分组存储所有事件
  final Map<String, List<Event>> dateToEvents = {};

  for (final group in groups) {
    // 若该日期已存在,追加事件;否则初始化事件列表
    dateToEvents.update(
      group.dateFormatted,
      (existingEvents) => existingEvents..addAll(group.events),
      ifAbsent: () => List.from(group.events),
    );
  }

  // 将分组结果转换回Group列表
  return dateToEvents.entries.map((entry) {
    return Group(
      dateFormatted: entry.key,
      events: entry.value,
    );
  }).toList();
}

逻辑说明

  1. 用Map<String, List<Event>>按dateFormatted作为键分组,统一存储对应日期下的所有Event
  2. 遍历原始Group列表,通过Map.update方法批量追加事件:
    • 若日期已存在,直接把当前Group的events加到已有列表
    • 若日期不存在,创建新列表并初始化当前Group的events
  3. 最后将Map的键值对转换为新的Group对象,得到合并后的列表

扩展处理

  • 如果需要对合并后的Event排序,可在生成新Group时对entry.value做排序处理,比如:
    events: entry.value..sort((a, b) => a.time.compareTo(b.time)),
    
  • 如果需要去重Event,需先在Event类中重写==和hashCode,然后将列表转为集合再转回列表:
    events: entry.value.toSet().toList(),
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:12:04