Java 更改LinkedHashMapValue

Java 更改LinkedHashMapValue,java,linkedhashmap,setvalue,Java,Linkedhashmap,Setvalue,以下是来自2个linkedHashMaps的数据: valueMap: { y=9.0, c=2.0, m=3.0, x=2.0} formulaMap: { y=null, ==null, m=null, *=null, x=null, +=null, c=null, -=null, (=null, )=null, /=null} 我要做的是将第一个映射中的值输入到第二个映射中的相应位置。这两个贴图都使用字符串、Double作为参数 以下是我迄今为止的尝试: for(Map.Entry&

以下是来自2个linkedHashMaps的数据:

valueMap:   { y=9.0, c=2.0, m=3.0, x=2.0}
formulaMap: { y=null, ==null, m=null, *=null, x=null, +=null, c=null, -=null, (=null, )=null, /=null}
我要做的是将第一个映射中的值输入到第二个映射中的相应位置。这两个贴图都使用字符串、Double作为参数

以下是我迄今为止的尝试:

for(Map.Entry<String,Double> entryNumber: valueMap.entrySet()){
   double doubleOfValueMap = entryNumber.getValue();
   for(String StringFromValueMap: strArray){
      for(Map.Entry<String,Double> entryFormula: formulaMap.entrySet()){          
         String StringFromFormulaMap = entryFormula.toString();
         if(StringFromFormulaMap.contains(StringFromValueMap)){
           entryFormula.setValue(doubleOfValueMap);
         }
      }
   }
}
(Map.Entry entryNumber:valueMap.entrySet())的
{
double doubleOfValueMap=entryNumber.getValue();
用于(字符串StringFromValueMap:strArray){
对于(Map.Entry entryFormula:formulaMap.entrySet()){
字符串StringFromFormulaMap=entryFormula.toString();
if(StringFromFormulaMap.contains(StringFromValueMap)){
setValue(doubleOfValueMap);
}
}
}
}
这样做的问题是,它会将所有值,即y、m、x、c设置为最后一个双精度的值。遍历这些值也不会起作用,因为这些值的顺序通常与formulaMap中的顺序不同。理想情况下,我需要说的是如果formulaMap中的字符串与valueMap中的字符串相同,请将formulaMap中的值设置为valueMap中的值。

如果您对我能做什么有什么想法,请告诉我。

这很简单:

formulaMap.putAll(valueMap);
如果您的值映射包含未包含在
formulaMap
中的键,并且您不想更改原始值,请执行以下操作:

final Map<String, Double> map = new LinkedHashMap<String, Double>(valueMap);
map.keySet().retainAll(formulaMap.keySet());
formulaMap.putAll(map);
for(Map.Entry-valueFormula:valueMap.entrySet()){
formulaMap.put(valueFormula.getKey(),valueFormula.value());
}

谢谢。我的代码比我的示例复杂得多。正在获取当前的修改异常。将尝试使其工作。对于示例代码,这应该不是问题。收藏功能非常强大;)谢谢,在我的问题中,我已经做了一个代码的演示,它正在工作=D。很明显,我的代码中还有其他问题。很抱歉再次提出这个问题,但我不想再就同一问题提出另一个问题。你的回答在我的代码中的一部分是完美的,但我的措辞使我的问题变得正确。给定:
valueMap{y=9.0,c=2.0,m=3.0,x=2.0}
formulaMap{y=dog,m=cat,x=bird,c=mouse}
。如果您有任何想法,请打开新答案或添加到您的答案中。RegardsOK,已编辑的评论,但看起来您还有另一个问题,作为一个数据结构,这看起来很奇怪。谢谢。我的代码比我的示例复杂得多。正在获取当前的修改异常。我将尝试让它工作。不幸的是,这是我的代码有一个错误。但你的解决方案肯定有效。谢谢
// The result map
for (final String key: formulaMap.keySet()) {
    map.put(formulaMap.get(key), valueMap.get(key));

// Either return the new map, or do:
valueMap.clear();
valueMap.putAll(map);
for(Map.Entry<String,Double> valueFormula: valueMap.entrySet()){          
  formulaMap.put(valueFormula.getKey(), valueFormula.value());
}