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

如何基于clicks值对Dart中的嵌套Map进行降序排序?

按嵌套Map的"clicks"值降序排序Map<int, dynamic>

Dart中默认的Map(HashMap)是无序的,要实现按嵌套的clicks值从高到低排序并保留顺序,可通过以下步骤实现:

核心实现逻辑

  1. 提取原Map的所有键值对(entries)转为列表
  2. 对列表按每个元素value中的clicks值进行降序排序
  3. 将排序后的键值对列表转为有序Map(使用LinkedHashMap确保顺序)

完整代码示例

import 'dart:collection';

void main() {
  Map<int, dynamic> myMap = {
    0: {"clicks": 12, "timeStamp": "2023-08-11 11:40:36.783"},
    1: {"clicks": 1, "timeStamp": "2023-08-12 10:47:36.783"},
    2: {"clicks": 29, "timeStamp": "2023-08-13 10:47:36.783"},
    3: {"clicks": 5, "timeStamp": "2023-08-01 10:47:36.783"},
    4: {"clicks": 90, "timeStamp": "2023-08-19 10:47:36.783"},
  };

  // 排序并生成有序Map
  final sortedEntries = myMap.entries.toList()
    ..sort((a, b) => b.value['clicks'].compareTo(a.value['clicks']));
  
  final myMapArranged = LinkedHashMap.fromEntries(sortedEntries);

  // 验证结果
  myMapArranged.forEach((key, value) {
    print('$key: $value');
  });
}

代码说明

  • myMap.entries.toList():将Map的键值对转换为可排序的列表
  • sort((a, b) => b.value['clicks'].compareTo(a.value['clicks'])):通过b.value['clicks']在前实现降序排序,若要升序则交换a和b的位置
  • LinkedHashMap.fromEntries(sortedEntries):将排序后的键值对列表转换为有序Map,保证输出顺序与排序结果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:58:19