Dart 如何对内部和外部地图进行排序?

Dart 如何对内部和外部地图进行排序?,dart,Dart,我在下面的地图上有一张地图: Map <String,Map<String,dynamic>> _allData = { "jewishStudies": {'jewish': ['b2019','a2019']}, "socialScience": {'social1': ['a2017','c2014','b2020'], 'social2': ['a2012','c2015','b2011'],

我在下面的地图上有一张地图:

Map <String,Map<String,dynamic>> _allData = {
   "jewishStudies": {'jewish': ['b2019','a2019']},

   "socialScience": {'social1': ['a2017','c2014','b2020'],
                     'social2': ['a2012','c2015','b2011'],
                     'social3': ['a2010','c2008','b2005']},

   "humanities":    {'human': ['z2017','c2014','k2020']},

   "exactSciences": {'exact': ['d2017','c2014','c2020']},

   "engineering":   {'eng': ['a2017']},

   "lifeScience":   {'life1': ['y2017','c2014','d2020'],
                     'life2': ['t2017','t2014','s2020'],
                     'life3': ['e2017','c2014','b2020']},

  "interStudies":  {'inter1':['a2017','c2014','b2020'],
                    'inter2':['a2017','c2014','b2020']},

   "general":      {'gen': ['g2017','w2014','b2020']},
  };
Map\u allData={
“犹太研究”:{'jewish':['b2019','a2019']},
“社会科学”:{'social1':['a2017'、'c2014'、'b2020'],
‘社会2’:[a2012’、‘c2015’、‘b2011’],
“social3”:[a2010'、'c2008'、'b2005'],
“人文学科”:{‘人文’:['z2017'、'c2014'、'k2020']},
“exactSciences”:{'exactSciences':['d2017','c2014','c2020']},
“工程”:{'eng':['a2017']},
“生命科学”:{'life1':['y2017'、'c2014'、'd2020'],
‘生命2’:[‘t2017’、‘t2014’、‘s2020’],
'生命3':['e2017','c2014','b2020']},
“研究间”:{'inter1':['a2017'、'c2014'、'b2020'],
‘inter2’:[a2017’、‘c2014’、‘b2020’],
“概述”:{'gen':['g2017'、'w2014'、'b2020']},
};
我想做:

  • 外部映射:映射的条目进行排序 按该映射键的字母顺序排列(该映射类型为字符串

  • 内部映射的条目进行排序:映射 按该映射键的字母顺序排列(该映射类型为字符串

  • 对内部映射列表中的项目进行排序:map 按字母顺序


  • 您可以使用
    SplayTreeMap
    按排序顺序迭代键

    例如(归功于伊利亚·哈拉莫夫):

    导入“省道:集合”;
    main(){
    SplayTreeMap st=新的SplayTreeMap();
    st[“yyy”]={“应该是”:“第三”};
    st[“zzz”]={“应该是”:“最后”};
    st[“aaa”]={“应该是”:“第一”};
    st[“bbb”]={“应该是”:“第二”};
    for(st.keys中的字符串键){
    打印(“$key:${st[key]}”);
    }
    }
    //输出:
    //aaa:第一
    //bbb:2
    //yyy:3
    //zzz:最后一次
    
    对地图进行排序是什么意思?您不能按映射值在内存中的存储顺序或从索引中访问它,只能使用其关联的键检索值。我想更改两个映射中条目的顺序,使键按字母顺序排列,列表中的项目也按字母顺序排列。
    import "dart:collection";
    main() {
      SplayTreeMap st = new SplayTreeMap<String, dynamic>();
      st["yyy"]={"should be":"3rd"};
      st["zzz"]={"should be":"last"};
      st["aaa"]={"should be":"first"};
      st["bbb"]={"should be":"2nd"};
      for (String key in st.keys) {
        print("$key : ${st[key]}");
      }
    }
    //Output:
    //aaa : first
    //bbb : 2nd
    //yyy : 3rd
    //zzz : last