我有这张 map :

var temp= { 
  'A' : 3,
  'B' : 1,
  'C' : 2
};

如何对映射的值进行排序(降序).我知道,我可以使用temp.values.toList()..ort().

但我想在如下键的上下文中进行排序:

var temp= { 
  'B' : 1,
  'C' : 2
  'A' : 3,
};

推荐答案

此示例使用自定义比较函数,该函数使sort()按值对键进行排序.则键和值被插入到A LinkedHashMap中,因为这种映射保证保持该顺序. 基本上与https://stackoverflow.com/a/29629447/217408相同,但根据您的用例进行定制.

import 'dart:collection';

void main() {
  var temp= { 
    'A' : 3,
    'B' : 1,
    'C' : 2
  };

  var sortedKeys = temp.keys.toList(growable:false)
    ..sort((k1, k2) => temp[k1].compareTo(temp[k2]));
    LinkedHashMap sortedMap = new LinkedHashMap
      .fromIterable(sortedKeys, key: (k) => k, value: (k) => temp[k]);
  print(sortedMap);
}

DartPad号上试穿一下.

Dart相关问答推荐

使用arm64v8/DART Docker映像进行编译时不支持DART镜像

将数据库提供程序导入另一个文件提供程序 dart

如何扩展 Dart 套接字 BroadcastStream 缓冲区大小为 1024 字节?

Flutter - MultiProvider 如何与相同类型的提供者一起工作?

在Flutter中在 initstate() 之前调用了dependOnInheritedElement()

如何在 Dart 中返回函数?

如何通过点击 BottomNavigationBarItem 以编程方式打开Drawer抽屉?

FlutterError (setState() 在 dispose() 之后调用:(生命周期状态:defunct,not mounted)

在 Dart 中处理字节数组时,使用 Uint8List 优于 List 有什么优势?

找不到名为split-per-abi的选项

如何使我的对话框可滚动?

如何提取dart/Flutter视频元数据

Flutter-当文本字段有焦点时隐藏提示文本

使用 Stream.periodic 时如何取消 Stream?

Opa vs Dart vs Haxe vs CoffeeScript

扩展一个只有一个工厂构造函数的类

如何在 Dart 中使用 char 类型?

何时使用polymer点击或点击?

具有 Maps 的 Null 感知运算符

如何使用 Dart 列出目录的内容?