Dart 按索引更改地图条目值

Dart 按索引更改地图条目值,dart,Dart,我知道可以通过以下方式更改地图条目值: Map<String,int> myMap = <String,int>{"test",0}; myMap['test'] = 1; 不,您不能在映射中按索引进行更改,因为没有任何排序的承诺,所以按索引访问一个映射的想法没有意义。除非另有规定,否则创建映射会导致使用某种形式的哈希映射,而这种哈希映射不会保留插入顺序 显式使用将保留插入顺序(例如,map.entries将按照键值对添加到map的顺序返回键值对),但无法按索引进行更改

我知道可以通过以下方式更改地图条目值:

Map<String,int> myMap = <String,int>{"test",0};
myMap['test'] = 1;

不,您不能在
映射中按索引进行更改,因为没有任何排序的承诺,所以按索引访问一个映射的想法没有意义。除非另有规定,否则创建
映射
会导致使用某种形式的哈希映射,而这种哈希映射不会保留插入顺序


显式使用将保留插入顺序(例如,
map.entries
将按照键值对添加到map的顺序返回键值对),但无法按索引进行更改

不,您不能在
映射中按索引进行更改,因为没有任何排序的承诺,因此按索引访问一个映射的想法没有意义。除非另有规定,否则创建
映射
会导致使用某种形式的哈希映射,而这种哈希映射不会保留插入顺序


显式使用将保留插入顺序(例如,
map.entries
将按照键值对添加到map的顺序返回键值对),但无法按索引进行更改

正如@Ben Konyi已经指出的那样,无法通过索引直接更改映射中的值,
map
的默认实现实际上是一个保留插入顺序的
LinkedHashMap
,因此,要通过索引更改条目,您可以使用
map.keys
检索键并使用那里的索引,例如:

var-map={};
map['a']=1;
map['b']=2;
map[map.keys.elementAt(0)]=3;
map[map.keys.elementAt(1)]=5;
断言(map['a']==3);
断言(map['b']==5);

正如@Ben Konyi已经指出的那样,无法通过索引直接更改映射中的值,
map
的默认实现实际上是保留插入顺序的
LinkedHashMap
,因此,要通过索引更改条目,您可以使用
map.keys
检索键,并在那里使用索引,例如:

var-map={};
map['a']=1;
map['b']=2;
map[map.keys.elementAt(0)]=3;
map[map.keys.elementAt(1)]=5;
断言(map['a']==3);
断言(map['b']==5);

如果你熟悉
flatter
我想听听你对这件事的看法。这取决于你在找什么,但我可能会帮你。如果你熟悉
flatter
我想听听你对这件事的看法。这取决于你在找什么,但我可能会帮你。
myMap[0] = 1;