【问题标题】:Dart Returning a List of Values Sorted by Keys from a MapDart 从地图返回按键排序的值列表
【发布时间】:2020-02-10 20:29:25
【问题描述】:

我有一个Map<int, String>,我希望返回一个字符串值列表,但按 int 键的升序/降序排序。如果我返回我也希望排序的相同迭代,这将很容易,例如返回map.keysmap.values 的列表,但除了手动创建列表之外,我想不出办法做到这一点在使用foreach() 遍历整个地图并从地图键中插入值以进行索引后,如下所示,然后在该列表中嵌套另一个foreach() 以消除任何空值。

Map<int, String> charMap = {2:'b', 1:'a', 4:'d'};
List<String> tempList = [];
List<String> charList = [];
charMap.forEach((key, value) => tempList.insert(key, value));
//tempList == ['a', 'b', '', 'd'];
charList = tempList..where((e) => e != null);
//charList == ['a', 'b', 'd'];

请告诉我有更好、更有效的方法吗?非常感谢任何帮助!

【问题讨论】:

    标签: list sorting dictionary dart type-conversion


    【解决方案1】:

    您可以创建排序键列表(keysAsckeysDesc),然后遍历此列表以从映射中获取值...

    Map<int, String> charMap = {2: 'b', 1: 'a', 4: 'd'};
    List<String> charList = [];
    
    final keysAsc = charMap.keys.toList()..sort((a, b) => a.compareTo(b));
    final keysDesc = charMap.keys.toList()..sort((a, b) => b.compareTo(a));
    
    for (final key in keysAsc) {
      charList.add(charMap[key]);
    }
    
    print(charList);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 2020-08-13
      相关资源
      最近更新 更多