dart map<PostModel, double> 排序 [重复]

Posted

技术标签:

【中文标题】dart map<PostModel, double> 排序 [重复]【英文标题】:dart map<PostModel, double> sorting [duplicate] 【发布时间】:2021-03-26 14:40:33 【问题描述】:

我有以下代表职位和距离的地图:Map&lt;PostModel, double&gt; products = 我想按升序对地图的值进行排序,但是:

products.values.toList().sort();

不起作用,地图保持不变。 PostModel 不可比较,也不可迭代,多个 Post 可以有相同的距离。 所以最后,地图看起来像:

(post1, 100),(post2, 100),(post3, 30),(post4,450),(post5,450)....

【问题讨论】:

你也可以考虑这个包:pub.dev/packages/sortedmap Sortedmap 在这里不起作用,因为 PostModel 不可比较......它无法实例化 【参考方案1】:

你可以试试这样的:

  final sortedValues =
      products.entries.toList()
        ..sort((key1, key2) =>
          key1.value.compareTo(key2.value)
        );
  products = Map.fromEntries(sortedValues);
  print(products);

【讨论】:

像个魅力,tks,在这里学到了一些非常有趣的方法 很高兴它对你有用。如果您愿意,也请给答案一个赞(赞成)。

以上是关于dart map<PostModel, double> 排序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 类型“Future<dynamic>”不是“Stream<PostModel>”类型的子类型?

在 dart 中访问 Map 元素

Dart - 如何对 Map 的键进行排序

Dart 映射,如何根据其键 id 替换 list<map> 中的特定键值?

如何将 List<Map<String,dynamic> 转换为 Dart 中的单个变量?

Dart:尽管强制转换,但无法将 List<dynamic> 转换为 List<Map<String, dynamic>>