我有一个包含String和double的Map,我想根据其值对此Map进行排序,并且只想取前4个键值对..如下所示
Map<String,dynamic> mymap={
'A':2000,
'B':8000,
'C':300,
'D':3890,
'E':8030,
'F':300,
'G':900,
};
我想把它转换成
Map<String,dynamic> resultmap={
'E':8030,
'B':8000,
'D':3890,
'A':2000,
'Others':1500,
};
2条答案
按热度按时间insrf1ej1#
要按值降序排列Map,可以使用类似下面的方法(查看here以获取更多信息)。
要得到其余值的总和,有一些不同的选项可供选择。我在Stack Overflow上找到了this approach:
剩下的工作是确保求和后的元素被移除,并将上面的和与所需的键沿着添加到Map中。
让我知道这对你是否有效。:-)
mzillmmw2#
您可以通过几个步骤完成此操作。
首先申报您的Map。
然后,使用此代码按降序对声明的Map进行排序。
然后,创建一个新Map,并将排序后的列表作为条目添加到新Map中。
现在,用这个代码求其他数的和。
最后,创建一个新的Map,并通过检查条目是三位数还是四位数来添加该Map中的条目,最后将我们在上一步中得到的总和相加。
你会得到这样的结果。
希望能有所帮助:)