Map dart,替换地图中的键和值的好方法?

Map dart,替换地图中的键和值的好方法?,map,dart,Map,Dart,我有一个映射,我想检查值和键并用其他对象替换满足某些设置条件的特定对象的任何出现,因此如果我找到满足特定条件的键。 我想将该键交换为另一个对象,该对象仍然指向地图中的同一个值对象,类似地,如果我找到要替换的值,我希望原始键指向替换值。 下面是一些适用于简化示例的代码,但看起来很难看,有没有更好的方法来实现这一点,也就是说,这种方法不需要提取所有要替换的键和值,然后将替换项写回。 最好只对映射进行一次迭代,而不是遍历键,然后遍历所有要替换的键和值 void main(){ //用一个对象替换实例A

我有一个
映射
,我想检查
并用其他对象替换满足某些设置条件的特定对象的任何出现,因此如果我找到满足特定条件的键。
我想将该键交换为另一个对象,该对象仍然指向地图中的同一个值对象,类似地,如果我找到要替换的值,我希望原始键指向替换值。
下面是一些适用于简化示例的代码,但看起来很难看,有没有更好的方法来实现这一点,也就是说,这种方法不需要提取所有要替换的键和值,然后将替换项写回。
最好只对映射进行一次迭代,而不是遍历键,然后遍历所有要替换的键和值

void main(){
//用一个对象替换实例A的所有值,并用同一个键减去“t”替换以“t”开头的所有键
var m={
“一”:新的A(),
“二”:新的A(),
“三”:新的B(),
“四”:新B()
};
mapKeyAndValueSwapper(m,
keyMeetsCondition:(k)=>k.startsWith(“t”),
ValueMeetCondition:(v)=>v是A,
keyReplacer:(k)=>k.replaceFirst(“t”,“”),
valueReplacer:(v)=>新对象();
印刷品(m);
}
mapKeyAndValueSwapper(映射m,{bool-KeyMeetCondition(键),bool-ValueMeetCondition(值),dynamic-keyReplacer(键),dynamic-valueReplacer(值)}){
var=[];
var KeystopReplaceValuesFor=[];
var-keys=m.keys;
键。forEach((k){
if(keyMeetsCondition!=null){
if(keyMeetsCondition(k)){
添加(k);
}
}
if(valueMeetCondition!=null){
if(值满足条件(m[k])){
添加的密钥替换值(k);
}
}
});
forEach(k)的密钥替换值{
m[k]=值替换器(m[k]);
});
密钥替换forEach((k){
m[钥匙更换器(k)]=m.移除(k);
});
}
A类{}
B类{}

我认为这也是一样的:

Map newMap={};
m、 forEach((k,v){
var-key=k;
var值=v;
如果(m[k]是A){
值=新对象();
}
if(k.startsWith('t')){
key=k.replaceFirst('t','');
}
newMap[key]=值;
});

hmmm,你让我重新思考我的问题,谢谢。也许创建一个新映射比替换已有映射中的键和值更有效当您可以应用映射,但无法访问映射函数中的key`和值,但只能在键映射函数中使用键,只能在值映射函数中使用值。haivng查看了我的代码,很遗憾,我无法使用此解决方案,因为我无法访问原始映射引用要用它将返回的新映射覆盖,我确实需要单独替换现有映射中的每个键/值。不过,对于许多其他用例来说,这仍然是一个不错的解决方案